System and Method for Real-Time Customization and Synchronization of Media Content

ABSTRACT

A method for customizing media content includes: receiving over a network from a client device controlled by a user, by a server-side computing device, a message or packet comprising stock media content received from a user, the message or packet further comprising customization preferences of the user obtained by the client-side customization application, the customized media content to be played by a client-side playback device in coordination with server-side playback of the stock media content by a server-side playback device; customizing the stock media content, by the server-side computing device, using the customization preferences of the user, so as to create customized media content; and streaming live over the network, by the server-side computing device, to the client device, the customized media content for playback by the client device that is substantially synchronized with playback by the server-side computing device of the stock media content.

PRIORITY CLAIM

The present application claims the priority benefit of U.S. provisionalpatent application No. 62/036,834 filed Aug. 13, 2014 and entitled“Computer-Readable Medium, System and Method for Real-Time Customizationand Synchronization of Media Content,” the disclosure of which isincorporated herein by reference.

This invention relates to a method and system for the customization viaone or more electronic devices of one or more of media content.Particularly, the invention relates to a method and system forcustomization and synchronization via one or more electronic devices ofmedia content. More particularly, the invention relates to a method andsystem for the customization and synchronization via one or moreelectronic devices of one or more of one or more of audio and videocontent. More particularly, the invention relates to a medium, methodand system for real-time customization via one or more electronicdevices of one or more of synchronized audio and synchronized videocontent. Even more particularly, the invention relates to a medium,method and system for real-time customization via one or more electronicdevices of one or more of synchronized audio and synchronized videocontent within and around one or more of a venue, public, office, schooland home environment. Specifically, the invention relates to a medium,method and system for real-time customization via one or more electronicdevices of one or more of synchronized audio and synchronized videocontent within and around one or more of a venue, public, office andhome environment over a communications network. The invention providesfour different alternative methods, to which we respectively refer inshorthand as the baseline, download, streaming, and live methods.

According to embodiments of the invention, a platform is provided forthe synchronization of one or more of audio content, video content, andother data during playback of content. For example, the content may bedigital content. For example, the content may be another type of contentother than digital content. For example, the content may be accessed bya user using a client device. For example, the content may be accessedby the user over a network. For example, the audio content may compriseone or more of customized audio content and alternative audio content.For example, the video content may comprise one or more of customizedvideo content, customized video content and alternative video content.

In particular, according to further embodiments of the invention, theone or more of audio content, video content, and other data synchronizeswith on-screen video. For example, the on-screen video may be projectedusing one or more of a digital projector, hologram projector, computer,television, console, head-set, another projection device, and anotherreception device. The synchronization is performed by one or more of acomputer algorithm, clock and sensor. Alternatively, or additionally,the system receives synchronization input from one or more of the userand a designer.

According to further embodiments of the invention, a containedcommunication with the audience within the venue also can be monitored(i.e. expanded, edited or deleted) by an employee or contractor of thevenue. Alternative embodiments of the invention address home mediaviewing. Also, the client-side social networking application tracksevery user and knows each user's specific location in the venue. Also,according to yet other embodiments of the invention, the walledenvironment may include multiple venues within different locationsand/or time zones viewing the same media content simultaneously, maybeeven synchronously. Also, the client-side social networking applicationcan allow for the creation of private chat rooms.

According to further embodiments of the invention, media content may becustomized, including a children's customization system. According toyet other embodiments of the invention, media content can be saved,including children's media content. A user may choose one or more of alanguage of interest, a commentary track of interest, a commercial ofinterest, a trailer of interest, a demo of interest, and alternativecontent of interest. The user may choose to participate in a survey.These features are available in one or more of in venue settings, ondemand settings, in-synchronization (“in-sync”) settings, and in othersettings. These features are available on multiple platforms anddevices.

According to other embodiments of the invention, a method for real-timecustomization and synchronization of stock media content includes:receiving, by a client device controlled by a user, stock media contentselected by the user to be customized and played on the client device incoordination with server-side playback of the stock media content by aserver-side computing device; obtaining, by the client device,customization preferences of the user; customizing the stock mediacontent, by the client device, using the customization preferences, soas to create customized media content; creating, by the client device, aclient-side message or packet comprising one or more of a client-sideunique identifier and a client-side start host time (CSHT); sending, bythe client device, the client-side message or packet to the server-sidecomputing device; receiving and processing a server-side message orpacket comprising g one or more of a server-side unique identifier, theCSHT, a server-side start host time (SSHT), a server-side end host time(SEHT), and a server-side running media play time (SRMPT) andsubstantially synchronizing in real-time, by the client device, usingone or more of the server-side unique identifier, the CSHT, the SSHT,the SEHT, and the SRMPT, client-side playback of the customized mediacontent with server-side playback of the stock media content; andplaying back, by the client device, the synchronized customized mediacontent.

According to still further embodiments of the invention, a method forcustomizing media content pursuant to a method for real-timecustomization and synchronization of stock media content includes:receiving and processing, by a server-side computing device, from aclient device controlled by a user, a client-side message or packet fromthe client device comprising one or more of a client-side uniqueidentifier, and a client-side start host time (CSHT); creating, by theserver-side computing device, a server-side message or packet comprisingone or more of a server-side unique identifier comprising a copy of theclient-side unique identifier, the CSHT, a server-side start host time(SSHT), a server-side end host time (SEHT), and a server-side runningmedia play time (SRMPT); transmitting the server-side message or packetto the client device, by the server-side computing device, to be used bythe client device along with previously received stock media contentselected by a user to be customized, and customized media contentpreviously created using customization preferences obtained from a user,to substantially synchronize in real-time, using the CSHT, client-sideplayback of the customized media content with server-side playback ofthe stock media content; and playing back, by the server-side computingdevice, the synchronized stock media content.

According to other embodiments of the invention, a method forcustomizing media content pursuant to a method for real-timecustomization and synchronization of stock media content includes:receiving over a network from a client device controlled by a user, by aserver-side computing device, a message or packet comprising stock mediacontent received from a user, the message or packet further comprisingcustomization preferences of the user obtained by the client-sidecustomization application, the customized media content to be played bya client-side playback device in coordination with server-side playbackof the stock media content by a server-side playback device; customizingthe stock media content, by the server-side computing device, using thecustomization preferences of the user, so as to create customized mediacontent; transmitting, by the server-side computing device, to theclient device, the customized media content so that the client devicemay substantially synchronize with its playback of the customized mediacontent a playback of the stock media content by the server-sidecomputing device; receiving, by the server-side computing device, fromthe client device, a client-side message or packet comprising one ormore of a client-side unique identifier and a client-side start hosttime (CSHT); sending to the client device, by the server-side computingdevice, a server-side message or packet comprising one or more of aserver-side unique identifier, the CSHT, a server-side start host time(SSHT), a server-side end host time (SEHT), and a server-side runningmedia play time (SRMPT); and initiating, by the server-side computingdevice, server-side playback of the stock media content and initiating,by the server-side computing device, via a play command the server-sidecomputing device sends to the client device, client-side playback of thecustomized media content that is substantially synchronized using one ormore of the client-side unique identifier, the CSHT, the SSHT, the SEHT,and the SRMPT.

According to embodiments of the invention, a method for receiving andprocessing a server-side message or packet and synchronizing one or moreclocks comprised in a client device under a user's control with one ormore server-side clocks pursuant to a method for real-time customizationand synchronization of stock media content includes: receiving, by theclient device, a server-side message or packet from the server-sidemaster application, the server-side message or packet comprising one ormore of a unique identifier, a client-side start host time (CSHT), aserver-side start host time (SSHT), a server-side end host time (SEHT),and a server-side running media play time (SRMPT); reading, by theclient device, the server-side message or packet into one or moreclient-side buffers; recording, by the client device, a client-side endhost time (CEHT); evaluating and verifying, by the client device,integrity of the server-side message or packet by comparing the CEHT andthe SEHT; calculating a half-round-trip time (HRT), by the clientdevice, using one or more of the CEHT, CSHT, SEHT, and SSHT; reading, bythe client device a value of the SRMPT; calculating, by the clientdevice, using one or more of CEHT, CSHT, SEHT, SSHT, SRMPT, and HRT, aplayback offset time T_(PO); computing, by the client device, using oneor more of the T_(PO) and the SRMPT, a client-side running media playtime (CRMPT); and substantially synchronizing, by the client device,using one or more of the CRMPT and the T_(PO), client-side playback ofcustomized media content to server-side playback of stock media content.

According to other embodiments of the invention, a method forcustomizing media content pursuant to a method for real-timecustomization and synchronization of stock media content includes:receiving over a network from a client device controlled by a user, by aserver-side computing device, a message or packet comprising stock mediacontent received from a user, the message or packet further comprisingcustomization preferences of the user obtained by the client-sidecustomization application, the customized media content to be played bya client-side playback device in coordination with server-side playbackof the stock media content by a server-side playback device; customizingthe stock media content, by the server-side computing device, using thecustomization preferences of the user, so as to create customized mediacontent; and streaming live over the network, by the server-sidecomputing device, to the client device, the customized media content forplayback by the client device that is substantially synchronized withplayback by the server-side computing device of the stock media content.

According to still further embodiments of the invention, a method forcustomizing stock media content pursuant to a method for real-timecustomization and synchronization of stock media content, so as tocreate customized media content includes: receiving, by a server-sidecomputing device, from a client device under the control of a user, aclient-side message or packet with pre-determined media content;creating, by the server-side computing device, a customized mediacontent; adding, by the server-side computing device, to the customizedmedia content, using a pre-defined data structure, new media contentcomprising one or more of user-selected new media content andnon-user-selected new media content; computing, by the server-sidecomputing device, a total media frames count of the customized mediacontent; computing, by the server-side computing device, a totalpercentage of the then-written customized media content; and writing, bythe server-side computing device, the new media content into thecustomized media content.

According to embodiments of the invention, a method for receiving andprocessing a server-side message or packet and synchronizing one or moreclocks comprised in a client device under a user's control with one ormore server-side clocks pursuant to a method for real-time customizationand synchronization of stock media content includes: receiving, by theclient device, a server-side message or packet from the server-sidemaster application, the server-side message or packet comprising one ormore of a unique identifier, a client-side start host time (CSHT), aserver-side start host time (SSHT), a server-side end host time (SEHT),and a server-side running media play time (SRMPT); reading, by theclient device, the server-side message or packet into one or moreclient-side buffers; recording, by the client device, a client-side endhost time (CEHT); evaluating and verifying, by the client device,integrity of the server-side message or packet by comparing the CEHT andthe SEHT; calculating a half-round-trip time (HRT), by the clientdevice, using one or more of the CEHT, CSHT, SEHT, and SSHT; reading, bythe client device a value of the SRMPT; calculating, by the clientdevice, using one or more of CEHT, CSHT, SEHT, SSHT, SRMPT, and HRT, aplayback offset time T_(PO); computing, by the client device, using oneor more of the T_(PO) and the SRMPT, a client-side running media playtime (CRMPT); and synchronizing, by the client device, using one or moreof the CRMPT and the T_(PO), client-side playback of customized mediacontent to server-side playback of stock media content.

According to other embodiments of the invention, a method forconstructing a media content file comprising one or more of a user'sselected media content and media content that was not selected by theuser, pursuant to a method for real-time customization andsynchronization of stock media content includes: launching, by a clientdevice under the control of a user, a client-side media player;selecting and playing, by the client device, a pre-determined mediacontent; creating, by the client device, a customized media content;adding, by the client device, new media content to the customized mediacontent; computing, by the client device, a total media frames count ofthe customized media content; computes, by the client device, a totalpercentage of the then-written customized media content; and writing, bythe client device, the new media content into the customized mediacontent.

According to yet further embodiments of the invention, a server-sidecomputing device for customizing media content includes: a processor;data storage operably connected with the processor; memory operablyconnected with the processor, the memory comprising one or more of aserver-side master application, a server-side customization application,and a server-side streaming application; a projector operably connectedwith the processor; and a local interface operably connected with theprocessor and configured to communicate over a network with a clientdevice controlled by a user, the server-side master applicationconfigured to receive over the network from the client device a messageor packet comprising stock media content selected by the user, theserver-side customization application configured to obtain customizationpreferences of the user; the server-side customization applicationfurther configured to customize the stock media content, using thecustomization preferences of the user, so as to create customized mediacontent, the local interface configured to transmit to the client devicevia the network server-side timing information and the customized mediacontent so that the client device may substantially synchronize with itsplayback of the customized media content a playback by the projector ofthe stock media content.

DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram of a networked environment for real-timecustomization and synchronization via one or more electronic devices ofmedia content.

FIG. 2 is a schematic block diagram of the server-side computing devicein an alternative configuration of a networked environment for real-timecustomization and synchronization via one or more electronic devices ofmedia content.

FIG. 3 is a flowchart of a method for real-time customization andsynchronization of stock media content. FIG. 3 applies to the baselinemethod viewed from the client side.

FIG. 4 is a flowchart of a method for real-time customization andsynchronization of stock media content. FIG. 4 applies to the baselinemethod viewed from the server side.

FIG. 5 is a flowchart of a method for real-time customization andsynchronization of stock media content. FIG. 5 applies to the downloadand streaming methods viewed from the client side.

FIG. 6 is a flowchart of a method for real-time customization andsynchronization of stock media content. FIG. 6 applies to the downloadand streaming method viewed from the server side.

FIG. 7 is a flowchart of a method for real-time customization andsynchronization of stock media content. FIG. 7 applies to the livemethod viewed from the client side.

FIG. 8 is a flowchart of a method for real-time customization andsynchronization of stock media content. FIG. 8 applies to the livemethod viewed from the server side.

FIG. 9 is a flowchart of a more detailed method by which the client-sidecustomization application, using a pre-defined data structure, using aclient-side main thread and a client-side background thread, constructsa media content file comprising one or more of a user's selected mediacontent and media content that was not selected by the user. FIG. 9provides provide more detail regarding sub-steps of step 315 in FIG. 3for the baseline method.

FIG. 10 is a flowchart of a method by which the client-sidecustomization application, using a pre-defined data structure,constructs a media content file comprising one or more of a user'sselected media content and media content that was not selected by theuser. FIG. 10 provides more detail regarding sub-steps of step 315 inFIG. 3 for the baseline method.

FIG. 11 is a flowchart of a more detailed method for customizing stockmedia content, so as to create customized media content, providing moredetail from an overall view regarding sub-steps of step 615 in FIG. 6for the download and streaming methods, and providing more detailregarding sub-steps of step 815 in FIG. 8 for the live method.

FIG. 12 is a flowchart of a method for customizing stock media content,so as to create customized media content, providing more detail from anoverall view regarding sub-steps of step 615 in FIG. 6 for the downloadand streaming methods, and providing more detail regarding sub-steps ofstep 815 in FIG. 8 for the live method.

FIG. 13 is a flowchart of a method for constructing a customized mediacontent comprising stock media content selected by a user andcustomization preferences of the user. FIG. 13 provides more detailregarding sub-steps of step 345 in FIG. 3 for the baseline method, step545 in FIG. 5 for the download and streaming methods, and step 745 inFIG. 7 for the live method.

FIG. 14 is a flowchart of a method for receiving and processing aserver-side message or packet and synchronizing one or more clocks in aclient-side synchronization application with one or more clocks in aserver-side master application. FIG. 14 provides more detail regardingsub-steps of step 360 in FIG. 3 for the baseline method, and step 560 inFIG. 5 for the download and streaming methods. Synchronization is notrequired with the live method.

FIGS. 15A and 15B are a pair of exemplary screenshots of GUI's of aclient device showing examples of screens initially displayed to a userprior to initiation of one or more of a customization andsynchronization.

FIG. 16 is an exemplary screenshot of a graphical user interface (GUI)of a client device in a networked environment where the client devicedisplays extracted media content that is taken from digital mediacontent and then is inserted into a custom media track.

FIG. 17 is an exemplary screenshot of a GUI of a client device thatdisplays an example of how the GUI receives the user's selection of acustom identifier to be inserted into a custom track.

FIG. 18 is an exemplary screenshot of a GUI of a client device showingan example of a backdrop screen seen by a user while processing of datais being performed.

FIG. 19 is an exemplary screenshot of a GUI of a client device showingan example of a customized player screen.

FIG. 20 is an exemplary screenshot of a GUI of a client device showingan example of a login screen for a children's application.

FIG. 21 is an exemplary screenshot of a GUI of a client device showingan example of a player resumption screen.

FIG. 22 is an exemplary screenshot of a GUI of a client device showingan example of a background screen seen by a user prior to initiation ofplay of media.

FIG. 23 is an exemplary screenshot of a GUI of a client device showingan example of an alternative commentary screen seen by a user as analternative commentary track is being played.

FIG. 24 is an exemplary screenshot of a GUI of a client device showingan example of an Alternative Content Screen seen by a user beforealternative content plays.

FIG. 25 is an exemplary screenshot of a GUI of a client device showingan example of an alternative content play screen seen by a user asalternative content is playing.

FIGS. 26A and 26B are a pair of exemplary screenshots of GUI's of aclient device showing examples of survey screens displayed to a userpursuant to initiation of a user survey.

FIG. 27 is an exemplary screenshot of a GUI of a client device showingan example of a Storefront Screen seen by a user visiting the store.

FIGS. 28A and 28B are a pair of exemplary screenshots of GUI's of aclient device showing examples of custom motion picture purchase screensdisplayed to a user pursuant to initiation of a purchase of a custommotion picture.

FIG. 29 is an exemplary screenshot of a GUI of a client device showingan example of an item purchase screen seen by a user considering makinga purchase of an item.

FIG. 30 is an exemplary screenshot of a GUI of a client device showingan example of a Purchase Summary Screen seen by a user making a purchaseof the custom motion picture depicted in FIG. 28 and of the watchdepicted in FIG. 29.

FIGS. 31A and 31B are a pair of exemplary screenshots of GUI's of aclient device showing examples of users using the social network.

DETAILED DESCRIPTION

While the present invention is susceptible of embodiment in manydifferent forms, there is shown in the drawings and will herein bedescribed in detail one or more specific embodiments, with theunderstanding that the present disclosure is to be considered asexemplary of the principles of the invention and not intended to limitthe invention to the specific embodiments shown and described. In thefollowing description and in the several figures of the drawings, likereference numerals are used to describe the same, similar orcorresponding parts in the several views of the drawings.

The system for the customization via one or more electronic devices ofone or more of media content includes a plurality of components such asone or more of electronic components, hardware components, and computersoftware components. A number of such components can be combined ordivided in the system. An example component of the system includes a setand/or series of computer instructions written in or implemented withany of a number of programming languages, as will be appreciated bythose skilled in the art.

The system in one example employs one or more computer-readablesignal-bearing media. The computer-readable signal bearing media storesoftware, firmware and/or assembly language for performing one or moreportions of one or more implementations of the invention. Thecomputer-readable signal-bearing medium for the system in one examplecomprises one or more of a magnetic, electrical, optical, biological,and atomic data storage medium. For example, the computer-readablesignal-bearing medium comprises floppy disks, magnetic tapes, CD-ROMs,DVD-ROMs, hard disk drives, downloadable files, files executable “in thecloud,” and electronic memory.

FIG. 1 is a block diagram of a networked environment 100 for real-timecustomization and synchronization via one or more electronic devices ofmedia content that comprises a client-side networked environment 105, aserver-side networked environment 110, and a network 115. The network115 comprises one or more of the Internet, a private virtual network, anextranet, a fiber optic network, a wide area network (WAN), a local areanetwork (LAN), a wired network, a wireless network, and another type ofnetwork.

The client-side networked environment 105 comprises a client device 120and a client-side playback device 125 that is operably connected withthe client device 120. The client device 120 comprises, for example, oneor more of a tablet, a phone, a smart device, a virtual reality headset,a computer program, a computer browser, a media player, a game console,a virtual device, and another computing device.

The client device 120 processes a user's selection of media content. Forexample, the client device 120 processes the user's selection of mediacontent to match media content stored in the client-side data storage135. Alternatively, or additionally, the client device 120 may createnew media content. The media content may be one or more of encrypted,non-encrypted, compressed, and non-compressed.

For example, the client device 120 may create a new audio clip. Theclient device 120 may create the new audio clip by one or more ofexecuting a text-to-audio algorithm, executing a speech recognitionalgorithm, executing an algorithm based on trends, making a randomselection of the new audio clip, making a selection of the new audioclip, and by another method for making new media content. The clientdevice 120 may create the new audio clip based on one or more of a mediaselected by the user, a media selected by another user, the user'shistorical purchases, the user's consumption history, the user'srecommended items, items recommended by the system to users, and anotheraudio clip criterion.

The client device 120 runs one or more applications. The client device120 deploys over the network 115.

The client-side playback device 125 is configured to play media content.For example, the client-side playback device 125 plays media contentreceived from the client device 120. Alternatively, or additionally, theclient-side playback device 125 plays media content received directlyover the network 115. For example, the client-side playback device 125comprises one or more of a headphone, a pair of earphones, a pair ofearbuds, earworn wearables, a screen, a television, a monitor, anin-venue projector, a home theater, a television, a monitor, athree-dimensional digital projector, and another client-side playbackdevice. For example, the client-side playback device 125 comprises oneor more of an open headphone 125, a semi-open headphone 125, a closedheadphone 125, and another type of headphone 125. For example, theclient-side playback device 125 operates in one or more of asingle-channel environment and a multi-channel speaker environment. Forexample, the client-side playback device 125 operates in a Dolby Atmosenvironment.

The client device 120 comprises one or more of client-side memory 130and a client-side data storage 135.

The client-side memory 130 is defined herein as including both volatileand nonvolatile memory and data storage components. For example, theclient-side memory 130 comprises one or more client-side buffers.Volatile components are those that do not retain data values upon lossof power. Nonvolatile components are those that retain data upon loss ofpower. For example, the client-side memory 130 may comprise one or moreof random access memory (RAM), read-only memory (ROM), hard disk drive,solid-state drive, USB flash drive, memory card, floppy disk, opticaldisc such as compact disc (CD) or digital versatile disc (DVD), magnetictape, and other memory components. For example, the RAM may comprise oneor more of static random access memory (SRAM), dynamic random accessmemory (DRAM), magnetic random access memory (MRAM), and other forms ofRAM. For example, the ROM may comprise one or more of programmableread-only memory (PROM), erasable programmable read-only memory (EPROM),electrically erasable programmable read-only memory (EEPROM), and otherforms of ROM.

The client-side memory 130 comprises one or more of a client-sideelectronic commerce application 140, a client-side customizationapplication 145, a client-side synchronization application 147, aclient-side audience measurement application 150, a client-side socialnetworking application 155, and a client-side additional contentapplication 160. For example, the client-side memory 130 comprises oneor more client-side buffers.

The client-side memory 130 further comprises a client device uniqueidentifier. The client device unique identifier is a number unique tothis particular device. In other words, each device in the world willhave its own number that no other such device will have. A copy of theclient device unique identifier, known as a as a client-side uniqueidentifier, will be transmitted by the client in a message or packet tothe server. Then a copy of the client-side transmitted uniqueidentifier, known as a server-side unique identifier, will betransmitted back from the server to the client. The server-side uniqueidentifier received by the client will then be compared with the clientdevice unique identifier to help determine the integrity of the messagesand as a security check.

Optionally, the client-side memory 130 further comprises an otherclient-side application (not pictured). The other client-sideapplication comprises one or more of an additional client-sideapplication, an additional client-side service, an additionalclient-side process, and an additional client-side functionality.

For example, the other client-side application runs background services.For example, the other client-side application runs boot processes. Forexample, the other client-side application runs other client-sideapplications.

The client-side data storage 135 comprises one or more of a singledatabase, a multiple database, a cloud application platform, arelational database, a no-sequel database, flash memory, solid statememory, and another client-side data storage device. The client-sidedata storage 135 may be located in a single installation that may belocal to the server-side computing device 110. Alternatively, theclient-side data storage 135 may be located in a single installationthat may be local to the client device 120. Alternatively, theclient-side data storage 135 may be distributed in a plurality oflocations. The client-side data storage 135 may be distributed in aplurality of geographical locations. The client-side data storage 135may be distributed in a plurality of geographical locations located inthe same time zone. The client-side data storage 135 may be distributedin a plurality of geographical locations, wherein not all thegeographical locations are located in the same time zone.

The client-side data storage 135 comprises one or more of item prices,order information, media content, and other information. For example,the media content comprises one or more of an audio track, a videotrack, another media track, a motion picture, a commercial, a motionpicture trailer, a demonstration (“demo”), a commentary, extra content,and another form of additional content. The media content comprises oneor more of media data, media content files, and other media content. Themotion picture comprises one or more of a film, a movie, a documentary,a commercial, a trailer, a television show, and another motion picture.The media data comprises one or more of an audio track, a multi-channeltrack, a commentary, and other media data. The audio track comprises oneor more of an English language audio track, an audio track in a languageother than English, and a customized audio track. The commentarycomprises one or more of a commentary by one or more directors of amotion picture, a commentary by one or more actors in a motion picture,a commentary by contributors to a motion picture other than thedirectors and actors, and a commentary by persons other thancontributors to a motion picture.

The client-side electronic commerce application 140 is configured toperform one or more of receiving user orders, fulfilling user orders anddelivering ordered products to an ordering user. The client-sideelectronic commerce application 140 is configured to execute onlinepurchases placed by the user of one or more of physical goods, services,and media content. The client-side electronic commerce application 140is further configured to optionally customize the one or more ofphysical goods, services, and media content. For example, an additionalcharge may apply to a user wishing to have customized the one or more ofphysical goods, services, and media content. For example, the one ormore of physical goods, services, and media content may be customized byadding one or more of a user-specified name, a user-specified message orpacket, and another form of customization specified by the user.

For example, the user-specified name may comprise a name of a charactercomprised in the digital media content. For example, the digital mediacontent comprises a motion picture. For example, if a motion picture istitled, “Joe's and Sport's Exciting Trip” and describes a road trip by aman Joe and his dog Sport, the user-specified name might be “Joe.” Forexample, the user might insert the user's own name as the name of one ofthe characters in the digital media content. For example, a user namedHamilton might insert “Hamilton” as the name of the character known inthe motion picture as Joe. For example, the user might insert the nameof his or her pet as the name of one of the animals in the digital mediacontent. For example, if Hamilton has a dog named Champ, Hamilton mightinsert “Champ” as the name of the dog known in the motion picture asSport.

The client-side customization application 145 is configured to storemedia content. For example, the client-side customization application145 stores the playable media content in the client-side data storage135. The playable media content comprises one or more of a segmentedmedia content track, a non-segmented media content track, and anotherplayable media content. Optionally, the client-side customizationapplication 145 performs media processing of the playable media content.For example, the client-side customization application 145 passes theplayable media content through a bandpass filter. For example, theclient-side customization application 145 parses the playable mediacontent into a chronological sequence that substantially matches thesequence of the motion picture. For example, the client-sidecustomization application 145 writes the playable media content to oneor more of the client-side data storage 135 and the client-side memory130. For example, the client-side customization application 145 writesthe playable media content to a media content file located in one ormore of the client-side data storage 135 and the client-side memory 130.

The client-side synchronization application 147 is configured to connectwith the server-side networked environment 110 so as to substantiallysynchronize between the server-side networked environment 110 and theclient device 120 media content played on the client-side playbackdevice 125. The client-side playback device 125 comprises one or more ofa screen, a television, a monitor, a cellular phone, a laptop computer,a desktop computer, a notebook, a tablet, a multi-channel playbacksystem, and another client-side playback device. The client-sideplayback device plays for the user one or more of audio media content,video media content, and another form of media content. For example, thenetworked environment 100 may be synchronized with other sensoryexperiences such as, for example, one or more of smoke effects, waterdroplets, moving chairs, and the like. For example, more than oneclient-side playback device 125 may be used simultaneously.

As explained below in greater detail, particularly in FIGS. 3 and 12,the client-side synchronization application 147 is configured to performone or more of sampling and recording a client-side running media playtime (CRMPT) at which the client-side media player plays the media onthe client. The CRMPT is defined as an elapsed running time forcustomized media content that is being played by the client-side mediaplayer on the client. If no customized media content is being played bythe client-side media player, the CRMPT is defined as zero. The CRMPTrecorded by the client-side synchronization application 147 represents areal world time value based on the host system clock of the client.Then, the client-side synchronization application 147 creates aclient-side message or packet that it transmits to the server-sidenetworked environment 110.

The client-side audience measurement application 150 is configured tosolicit the user's opinion regarding one or more questions of interest.For example, the client-side audience measurement application 150presents the user with one or more of a survey and another audiencemeasure. For example, the client-side audience measurement application150 solicits the user's opinion regarding an audience measure relatingto the media content displayed by the client-side playback device 125.

The client-side social networking application 155 comprises aclient-side social networking interface (not pictured) configured tocommunicate with the user. The client-side social networking interfacecommunicates with the user via one or more of in-venue communication andhome communication.

The client-side additional content application 160 is configured to playadditional content comprised in the client device 120. For example, theadditional content comprises one or more of a commercial, a motionpicture trailer, a demonstration (“demo”), extra content, and anotherform of additional content. For example, the demo comprises one or moreof a demonstration regarding a technical breakthrough, abehind-the-scenes short film regarding the making of a motion picture,an outtakes reel, a documentary about a topic relating to the motionpicture, and another demo. One or more of the commercials may becustomized. Alternatively, or additionally, one or more of thecommercials may not be customized. One or more of the trailers may becustomized. Alternatively, or additionally, one or more of the trailersmay not be customized.

The server-side networked environment 110 comprises a server-side datastorage 165, a server-side computing device 170 that is operablyconnected with the server-side data storage 165, and a server-sideplayback device 175 that is operably connected with the server-side datastorage 165. The server-side data storage 165 is a second locationwhere, as mentioned above in relation to the client-side data storage135, the client-side customization application 145 may store theplayable media content.

The server-side data storage 165 comprises one or more of item prices,order information, media content, and other information. The mediacontent comprises one or more of media data, media content files, andother media content. For example, the media content files comprise oneor more of an audio track, a video track, another media track, a motionpicture, another media track, a commercial, a motion picture trailer, ademonstration (“demo”), a commentary, extra content, and another form ofadditional content. For example, the audio track comprises one or moreof an English language audio track, an audio track in a language otherthan English, and a customized audio track. For example, the commentarycomprises one or more of a commentary by one or more directors of amotion picture, a commentary by one or more actors in a motion picture,a commentary by contributors to a motion picture other than thedirectors and actors, and a commentary by persons other thancontributors to a motion picture.

The server-side data storage 165 comprises one or more of a singledatabase, a multiple database, a cloud application platform, arelational database, a no-sequel database, flash memory, solid statememory, and another server-side data storage device. The server-sidedata storage 165 may be located in a single installation that may belocal to the client device 120. Alternatively, the server-side datastorage 165 may be located in a single installation that may be local tothe server-side computing device 170. Alternatively, the server-sidedata storage 165 may be distributed in a plurality of locations. Theserver-side data storage 165 may be distributed in a plurality ofgeographical locations. The server-side data storage 165 may bedistributed in a plurality of geographical locations located in the sametime zone. The server-side data storage 165 may be distributed in aplurality of geographical locations, wherein not all the geographicallocations are located in the same time zone.

The server-side computing device 170 comprises one or more of a server,a computer, a cloud-computing device, and a distributed computingsystem.

Optionally, the server-side computing device 170 further comprises another server-side application (not pictured). The other server-sideapplication comprises one or more of an additional server-sideapplication, an additional server-side service, an additionalserver-side process, and an additional server-side functionality.

For example, the other server-side application runs background services.For example, the other server-side application runs boot processes. Forexample, the other server-side application runs other server-sideapplications.

The server-side computing device 170 may be located in a singleinstallation. Alternatively, the server-side computing device 170 may bedistributed in a plurality of geographical locations. For example, theserver-side computing device 170 may be distributed in a plurality ofgeographical locations located in the same time zone. For example, theserver-side computing device 170 may be distributed in a plurality ofgeographical locations wherein not all the geographical locations arelocated in the same time zone.

The server-side playback device 175 is configured to play media content.For example, the server-side playback device 175 plays media contentreceived from the server-side computing device 170. Alternatively, oradditionally, the server-side playback device 175 plays media contentreceived directly over the network 115. For example, the server-sideplayback device 175 comprises one or more of a headphone, a pair ofearphones, a pair of earbuds, earworn wearables, a screen, a television,a monitor, an in-venue projector, a home theater, a television, amonitor, a three-dimensional digital projector, and another device. Theserver-side playback device 175 is configured to communicate with theserver-side computing device 170. For example, the server-side playbackdevice 175 communicates with the server-side computing device 170 usingone or more of a satellite, an antenna, a cable, the network 115, andanother communication method. The server-side playback device 175 is asecond device that can, as mentioned above in relation to theclient-side playback device 125, play media content regarding which theuser's opinion is solicited by the client-side audience measurementapplication 150.

The server-side computing device comprises a server-side memory 180. Theserver-side memory 180 is defined herein as including both volatile andnonvolatile memory and data storage components. For example, theserver-side memory 180 comprises one or more server-side buffers.Volatile components are those that do not retain data values upon lossof power. Nonvolatile components are those that retain data upon loss ofpower. For example, the server-side memory 180 may comprise one or moreof random access memory (RAM), read-only memory (ROM), hard disk drive,solid-state drive, USB flash drive, memory card, floppy disk, opticaldisc such as compact disc (CD) or digital versatile disc (DVD), magnetictape, and other memory components. For example, the RAM may comprise oneor more of static random access memory (SRAM), dynamic random accessmemory (DRAM), magnetic random access memory (MRAM), and other forms ofRAM. For example, the ROM may comprise one or more of programmableread-only memory (PROM), erasable programmable read-only memory (EPROM),electrically erasable programmable read-only memory (EEPROM), and otherforms of ROM.

The server-side memory 180 comprises one or more of a server-side masterapplication 185, a server-side customization application 190, and aserver-side streaming application 195. The server-side masterapplication 185 is configured to provide synchronization timinginformation to one or more of the client-side synchronizationapplication 147 and the server-side streaming application 195.

As explained below in greater detail, particularly in FIGS. 3 and 12,the server-side master application 185 is configured to perform one ormore of sampling and recording a server-side running media play time(SRMPT) at which the server-side media player plays the media on theserver. The SRMPT is defined as an elapsed running time for customizedmedia content that is being played by the server-side media player onthe server. If no customized media content is being played by theserver-side media player, the SRMPT is defined as zero. For example, themotion picture's SRMPT time might clock in at 6 minutes, 10 seconds, and10 frames. The SRMPT recorded by the server-side master application 185represents a real world time value based on the host system clock of theserver. Then, the server-side master application 185 creates aserver-side message or packet that it transmits to the client-sidesynchronization application 147.

The server-side customization application 190 is configured to storeplayable media content to be played by the server-side playback device175. For example, the server-side customization application 190 storesthe playable media content in the server-side data storage 165.Optionally, the server-side customization application 190 performs mediaprocessing of the playable media content. For example, the server-sidecustomization application 190 passes the playable media content througha bandpass filter. For example, the server-side customizationapplication 190 parses the playable media content into a chronologicalsequence that substantially matches the sequence of the motion picture.For example, the server-side customization application 190 writes theplayable media content to one or more of the server-side data storage165 and the server-side memory 180. For example, the server-sidecustomization application 190 writes the playable media content to amedia content file located in one or more of the server-side datastorage 165 and the server-side memory 180.

The server-side streaming application 195 segments media content fordeployment via the network 115 to the client device 120. The server-sidestreaming application 195 supports multiple alternate data streams, twoor more of which can have different bit rates from each other. Theserver-side streaming application 195 also allows for the client device120 to switch streams intelligently as network bandwidth changes. Theserver-side streaming application 195 also provides for media encryptionand user authentication over encrypted connections.

FIG. 2 is a schematic block diagram of the server-side computing device170 in an alternative configuration of a networked environment forreal-time customization and synchronization via one or more electronicdevices of media content.

The server-side computing device 170 comprises one or more of theserver-side data storage 165, the server-side projector 175, theserver-side memory 180, a server-side processor 210, and a server-sidelocal interface 220. The server-side local interface 220 isoperationally connected with one or more of the server-side data storage165, the server-side memory 180, and the server-side processor 210. Theserver-side memory comprises one or more of the server-side masterapplication 185, the server-side customization application 190, and theserver-side streaming application 195. For example, the server-sideprocessor 210 comprises a server-side computer. For example, theserver-side local interface 220 comprises a bus. For example, theserver-side local interface 220 comprises a bus and further comprisesone or more of an accompanying address/control bus or other busstructure.

Software components stored in one or more of the server-side memory 180and the server-side data storage 165 are executable by the server-sideprocessor 210. In this respect, the term “executable” means a programfile that is in a form that can ultimately be run by the server-sideprocessor 210. For example, a compiled program is executable if it maybe translated into machine code in a format that can be loaded into arandom access portion of the server-side memory 180 and run by theserver-side processor 210. For example, source code is executable if itmay be expressed in a proper format, such as object code, that may beloaded into a random access portion of the server-side memory 180 andrun by the server-side processor 210. For example, source code isexecutable if it may be interpreted by another executable program togenerate instructions in a random access portion of the server-sidememory 180 and run by the server-side processor 210. An executableprogram may be stored in one or more portions or components of theserver-side memory 180. For example, the server-side memory 180comprises one or more of random access memory (RAM), read-only memory(ROM), hard disk drive, solid-state drive, USB flash drive, memory card,floppy disk, optical disc such as compact disc (CD) or digital versatiledisc (DVD), magnetic tape, and other memory components may be stored inany portion or component of the server-side memory 180.

One or more of data and components stored in one or more of theserver-side memory 180 and the server-side data storage 165 areexecutable by the server-side processor 210. For example, theserver-side processor 210 can execute one or more of the server-sidemaster application 185, the server-side customization application 190,and the server-side streaming application 195.

For example, as an alternative to the setup in FIG. 1 with theserver-side data storage 165 separate from the server-side computingdevice 170, the server-side data storage 165 may be located in theserver-side computing device 170. For example, the server-side datastorage 165 may be located in the server-side memory 180.

The server-side processor 210 comprises one or more processors. Theserver-side memory 180 comprises one or more memories. For example, theserver-side memory 180 comprises at least one memory configured tooperate in a parallel processing circuit. In such a case, theserver-side local interface 220 may serve as the network 115. Forexample, the server-side local interface 220 may facilitatecommunication between two processors. For example, the server-side localinterface 220 may facilitate communication between a processor and amemory. For example, the server-side local interface 220 may facilitatecommunication between two memories. The server-side local interface 220may comprise additional systems designed to coordinate thiscommunication. For example, the server-side local interface 220 maycomprise a system to perform load balancing. The server-side processor210 may comprise an electrical processor. Alternatively, or additionallythe server-side processor 210 may comprise a non-electrical processor.

Any logic or application described herein, including but not limited tothe server-side master application 185, the server-side customizationapplication 190, and the server-side streaming application 195 thatcomprises software or code can be embodied in any non-transitorycomputer-readable medium for use by or in connection with an instructionexecution system such as, for example, a server-side processor 210 in acomputer system or other system. In this sense, the logic may comprise,for example, statements including instructions and declarations that canbe fetched from the computer-readable medium and can be executed by theinstruction execution system. In the context of the present disclosure,a computer-readable medium can be any medium that can contain, store, ormaintain the logic or application described herein for use by or inconnection with the instruction execution system. For example, thecomputer-readable medium may comprise one or more of RAM, ROM, hard diskdrive, solid-state drive, USB flash drive, memory card, floppy disk,optical disc such as a CD or a DVD, magnetic tape, and other memorycomponents. For example, the RAM may comprise one or more of SRAM,DRAM), MRAM, and other forms of RAM. For example, the ROM may compriseone or more of PROM, EPROM, EEPROM, and other forms of ROM.

FIG. 3 is a flowchart of a method 300 for real-time customization andsynchronization of stock media content. FIG. 3 applies to the baselinemethod viewed from the client side.

The order of the steps in the method 300 is not constrained to thatshown in FIG. 3 or described in the following discussion. Several of thesteps could occur in a different order without affecting the finalresult.

According to this method, to which we shall refer in shorthand as thebaseline method, the client constructs the customized media content.According to this baseline method, the client performs thesynchronization of the client-side playback with the server-sideplayback.

In block 305, a client-side customization application receives a user'sselection of stock media content to be customized and played on aclient-side playback device in synchronization with server-side playbackof the stock media content by a server-side master application. Theclient-side customization application stores the user's stock mediaselection in one or more of client-side data storage and client-sidememory. Block 305 then transfers control to block 310.

Next, in block 310, the client-side customization application obtains auser's customization preferences. A user's customization preferences canbe chosen by the user and then received by the client-side customizationapplication from the user. Alternatively, or additionally, the user'scustomization preferences can be generated by the client-sidecustomization application using user characteristics comprised in one ormore of memory and data storage. For example, a user may wish for hisname or the name of his spouse or his favorite musician to replace amain character's name throughout a motion picture. For example, a usermay like the Scottish accent so one of the main character's lines may bedubbed so as to be spoken with a Scottish accent. Alternatively, oradditionally, the client-side customization application uses the user'scharacteristics to generate the customization preferences. For example,if the name of a user's spouse is known, that name replaces a maincharacter's name throughout a motion picture without the userspecifically requesting this exact customization. For example, if a useris known to like soul music, a well-known soul music song may besubstituted into the movie at a point where a classical piece isnormally played. Block 310 then transfers control to block 315.

Next, in block 315, the client-side customization application, using thecustomization preferences, customizes the stock media content, so as tocreate customized media content. For example, the client-sidecustomization application customizes the stock media content using apre-defined data structure. For example, the pre-defined data structurestructures the data in chronological order. For example, the pre-defineddata structure structures the data according to a structure that doesnot comprise chronological order.

For example, the pre-defined data structure structures the user'sselected stock media content in chronological order, and structures thestock media content not selected by the user in separate chronologicalorder. For example, the pre-defined data structure structures the user'sselected stock media content in chronological order, first a titlesequence, second an opening act of a motion picture, third a middle actof a motion picture, fourth a closing act of a motion picture, and fifthcredits of a motion picture. For example, the chronological order isbased on the time the stock media content was created by the mediacreators such as film directors or musicians. For example, thechronological order is based on the time the stock media content wassaved. For example, the chronological order is based on the time atwhich the stock media content had maximum popularity. For example, thechronological order is based on another user-selected time.

Further details of how to perform step 315 are given in FIGS. 9 and 10.Block 315 then transfers control to block 330.

Next, in block 330, the client-side synchronization application createsa client-side message or packet. The client-side message or packetcomprises one or more of a client-side unique identifier and aclient-side start host time (CSHT). The client-side unique identifiercomprises a copy of the client-side customization application uniqueidentifier. The client device unique identifier uniquely identifies theclient device. The CSHT is defined as a host time at which transmissionof a server-side message or packet is requested on the client side. Forexample, the CSHT may comprise the time at which client-side playbackstarts. For example, the client device comprises one or more of atablet, a notebook computer, a laptop computer, a cellular phone, andanother client computing device. For example, the client-side uniqueidentifier comprises an alphanumeric string.

For example, the client-side customization application communicates overa network so as to obtain server-side timing information from theserver-side master application. For example, to communicate with theserver-side master application, the client-side synchronizationapplication browses the network. The client-side synchronizationapplication then resolves the master application. The client-sidesynchronization application then connects via the network to the masterapplication. Further, one or more of a server-side clock and an externalclock may be used to synchronize the server-side master application withthe client-side customization application. Block 330 then transferscontrol to block 335.

Next, in block 335, the client-side customization application sends theclient-side message or packet to the server-side master application.Optionally, to facilitate error detection, a client-side transmittederror code can be added to messages or packets sent from the client-sideto the server-side. To facilitate verification of data authenticity, theclient-side customization application saves the client-side message orpacket to one or more of client-side memory and client-side datastorage. Block 335 then transfers control to block 340.

Next, in block 340, the client-side synchronization application waitsfor a pre-determined time period for a valid response from theserver-side master application. If a valid response is received withinthe pre-determined time period, the process continues to step 345. Ifthe client-side customization application does not receive a validresponse from the server-side master application within a pre-determinedtime period, the request times out, and the process loops back to step330.

Next, in block 345, the server-side master application receives andprocesses the client-side message or packet. Further details of how toperform step 345 are given in FIG. 13. Block 345 then transfers controlto block 350.

Next, in block 350, using the synchronized clocks, the server-sidemaster application creates a server-side message or packet. For example,the server-side message or packet comprises one or more of a server-sideunique identifier, the CSHT, a server-side start host time (SSHT), aserver-side end host time (SEHT), and a server-side running media playtime (SRMPT). The SSHT is defined as a host time at which transmissionof a client-side message or packet is requested on the server side. Forexample, the SSHT may comprise the time at which server-side playbackstarts. The SEHT is defined as a host time at which transmission of aclient-side message or packet ends on the server side. For example, theSEHT may comprise the time at which server-side playback stops. Block350 then transfers control to block 355.

Next, in block 355, the server-side master application transmits theserver-side message or packet to the client-side synchronizationapplication. Optionally, to facilitate error detection, the server-sidemaster application adds a server-side transmitted error code to one ormore server-side messages or packets it sends to the client-sidesynchronization application. Block 355 then transfers control to block360.

Next, in block 360, the client-side synchronization application receivesand processes the server-side message or packet and substantiallysynchronizes one or more clocks in the client-side synchronizationapplication with one or more clocks in the server-side masterapplication. Further details of how to perform step 360 are given inFIG. 14. Optionally, an additional step may be inserted here of relayingto the user, by the client device, one or more offers to purchasecustomized goods prepared by the server-side computing device using theuser's customization preferences.

Block 360 then transfers control to block 375.

Next, in block 375, the client-side synchronization application beginsplayback of the customized media content in synchronization withplayback of the stock media content by a server-side playback device.Block 375 then terminates the process.

FIG. 4 is a flowchart of a method 400 for real-time customization andsynchronization of stock media content. FIG. 4 applies to the baselinemethod viewed from the server side.

The order of the steps in the method 400 is not constrained to thatshown in FIG. 4 or described in the following discussion. Several of thesteps could occur in a different order without affecting the finalresult.

In block 405, a server-side master application receives and processesfrom a client device controlled by a user a client-side message orpacket comprising one or more of a client-side unique identifier and aclient-side start host time (CSHT). Block 405 then transfers control toblock 450.

Next, in block 450, the server-side master application creates aserver-side message or packet. For example, the server-side message orpacket comprises one or more of a server-side unique identifier, theCSHT, a server-side start host time (SSHT), a server-side end host time(SEHT), and a server-side running media play time (SRMPT). Theserver-side unique identifier comprises a copy of the client-side uniqueidentifier. Block 450 then transfers control to block 455.

Next, in block 455, the server-side master application transmits theserver-side message or packet to the client-side synchronizationapplication, to be used by the client-side customization applicationalong with previously received stock media content selected by a user tobe customized, and customized media content previously created usingcustomization preferences obtained from a user, to substantiallysynchronize in real-time, using the CSHT, client-side playback of thecustomized media content with server-side playback of the stock mediacontent. Block 455 then transfers control to block 475.

Next, in block 475, the server-side master application begins playbackof the stock media content in synchronization with playback of thecustomized media content by a client-side playback device. Block 475then terminates the process.

FIG. 5 is a flowchart of a method 500 for real-time customization andsynchronization of stock media content. FIG. 5 applies to the downloadand streaming method viewed from the client side.

The order of the steps in the method 500 is not constrained to thatshown in FIG. 5 or described in the following discussion. Several of thesteps could occur in a different order without affecting the finalresult.

According to this method, which covers the first and second alternativemethods, the download and streaming methods, the server constructs thecustomized media content. The client performs the synchronization of theclient-side playback with the server-side playback.

According to the download method, the client-side customizationapplication sends the user's selection of media content to theserver-side customization application. The server-side customizationapplication then constructs the customized media content file and thensends the media content file to the client-side synchronizationapplication for playback. According to the download method, theclient-side synchronization application performs the synchronization ofthe client-side playback with the server-side playback. Optionally, themedia content file can be chunked so that it can be downloaded insections.

According to the streaming method, the client-side customizationapplication streams the user's selection of stock media content to theserver-side customization application. The server-side customizationapplication then constructs the customized media content file and thensends the media content file to the client-side synchronizationapplication for playback. According to the streaming method, theclient-side synchronization application performs the synchronization ofthe client-side playback with the server-side playback. Optionally, themedia content file can be chunked so that it can be streamed insections.

In block 505, a client-side customization application receives a user'sselection of stock media content to be customized and played by aclient-side playback device in synchronization with server-side playbackof the stock media content by a server-side playback device. Block 505then transfers control to block 510.

Next, in block 510, the client-side customization application obtains auser's customization preferences. A user's customization preferences canbe chosen by the user. Alternatively, or additionally, the user'scustomization preferences can be generated using user characteristicscomprised in one or more of memory and data storage. For example, a usermay wish for his name or the name of his spouse or his favorite musicianto replace a main character's name throughout a motion picture. Forexample, a user may like the Scottish accent so one of the maincharacter's lines may be dubbed so as to be spoken with a Scottishaccent. Alternatively, or additionally, the client-side customizationapplication uses the user's characteristics to generate thecustomization preferences. For example, if the name of a user's spouseis known, that name replaces a main character's name throughout a motionpicture without the user specifically requesting this exactcustomization. For example, if a user is known to like soul music, awell-known soul music song may be substituted into the movie at a pointwhere a classical piece is normally played. Block 510 then transferscontrol to block 512.

Next, in block 512, the client-side synchronization application sends tothe server-side customization application a client-side messagecomprising one or more of the user's customization preferences and theuser's selection of stock media content, for the server-sidecustomization application to use to construct the media content file,creating customized media content.

For example, to communicate with the server-side master application, theclient-side synchronization application browses the network. Theclient-side synchronization application then resolves the masterapplication. The client-side synchronization application then connectsvia the network to the master application. Block 512 then transferscontrol to block 523.

Next, in block 523, the client-side synchronization application receivesthe customized media content in real-time from the server-side streamingapplication. For the download alternative, the client-sidesynchronization application receives the customized media by downloadfrom the server-side synchronization application and stores thecustomized media content in the client-side data storage 135 or in aclient-side buffer. Alternatively, for the streaming alternative, theclient-side synchronization application receives by streaming andtemporarily stores segments of the customized media content in theclient-side data storage 135 or in the client-side buffer. Block 523then transfers control to block 530.

Next, in block 530, the client-side synchronization application createsa client-side message or packet. The client-side message or packetcomprises one or more of a client-side unique identifier and aclient-side start host time (CSHT). Block 530 then transfers control toblock 535.

Next, in block 535, the client-side customization application sends theclient-side message or packet to the server-side master application.Optionally, to facilitate error detection, a client-side transmittederror code can be added to messages or packets sent from the client-sideto the server-side. To facilitate verification of data authenticity, theclient-side customization application saves the client-side message orpacket to one or more of client-side memory and client-side datastorage. Block 535 then transfers control to block 540.

Next, in block 540, the client-side synchronization application waitsfor a pre-determined time period for a valid response from theserver-side master application. If a valid response is received withinthe pre-determined time period, the process continues to step 555. Ifthe client-side customization application does not receive a validresponse from the server-side master application within a pre-determinedtime period, the request times out, and the process loops back to step530.

Next, in block 555, the client-side synchronization application receivesfrom the server-side master application a server-side message or packetcomprising one or more of a server-side unique identifier, the CSHT, aserver-side start host time (SSHT), a server-side end host time (SEHT),and a server-side running media play time (SRMPT). For example, the SSHTmay comprise the time at which server-side playback starts. Optionally,to facilitate error detection, the server-side master application adds aserver-side transmitted error code to one or more server-side messagesor packets it sends to the client-side synchronization application.Block 555 then transfers control to block 560.

Next, in block 560, the client-side synchronization application receivesand processes the server-side message or packet and synchronizes one ormore clocks in the client-side synchronization application with one ormore clocks in the server-side master application. Alternatively, oradditionally for the streaming alternative, the client-sidesynchronization application loads into the client-side player thecustomized media content playlist. Further details of how to performstep 560 are given in FIG. 13. Block 560 then transfers control to block565.

Next, in block 565, the client-side synchronization application receivesa play command from the server-side master application. Block 565 thentransfers control to block 575.

Next, in block 575, the client-side synchronization applicationprocesses the command to begin playback and begins playback. Forexample, using the synchronized clocks, the client-side synchronizationapplication plays the customized media content in synchronization with aclient-side playback device. Block 575 then transfers control to block580.

Finally, in block 580, the client-side synchronization applicationdisconnects from the server-side master application. For example, theclient-side synchronization application disconnects via the network fromthe server-side master application. Block 580 then terminates theprocess.

FIG. 6 is a flowchart of a method 600 for real-time customization andsynchronization of stock media content. FIG. 6 applies to the downloadand streaming method viewed from the server side.

The order of the steps in the method 600 is not constrained to thatshown in FIG. 6 or described in the following discussion. Several of thesteps could occur in a different order without affecting the finalresult.

According to this method, which covers the first and second alternativemethods, the download and streaming methods, the server constructs thecustomized media content. The client performs the synchronization of theclient-side playback with the server-side playback.

In block 605, a server-side master application receives over a networkfrom a client-side customization application a client-side message orpacket comprising stock media content received from a user, theclient-side message or packet further comprising customizationpreferences of the user obtained by the client-side customizationapplication, the customized media content to be played by a client-sideplayback device in coordination with server-side playback of the stockmedia content by a server-side playback device.

A user's customization preferences can be chosen by the user.Alternatively, or additionally, the user's customization preferences canbe generated using user characteristics comprised in one or more ofmemory and data storage. Block 605 then transfers control to block 615.

Next, in block 615, the server-side master application, using thecustomization preferences of the user, customizes the stock mediacontent, so as to create customized media content. For example, theserver-side master application customizes the stock media content usinga pre-defined data structure. For example, the pre-defined datastructure structures the data in chronological order. For example, thepre-defined data structure structures the data according to a structurethat does not comprise chronological order. Further details of how toperform step 615 are given in FIG. 12. Block 615 then transfers controlto block 620.

Next, in block 620, the server-side master application transmits thecustomized media content to the client-side synchronization application.

For example, to communicate with the client-side synchronizationapplication, the server-side master application browses the network. Theserver-side master application then resolves the client-sidesynchronization application. The server-side master application thenconnects via the network to the client-side synchronization application.

For the download alternative, the server-side synchronizationapplication downloads the customized media content to the client-sidesynchronization application. Alternatively, for the streamingalternative, the server-side synchronization application streamssegments of the customized media content to the client-sidesynchronization application. Block 620 then transfers control to block630.

Next, in block 630, the server-side master application receives from theclient-side synchronization application a client-side message or packet.The client-side message or packet comprising one or more of aclient-side unique identifier and a client-side start host time (CSHT).Block 630 then transfers control to block 655.

Next, in block 655, the server-side master application sends to theclient-side synchronization application a server-side message or packetcomprising one or more of a server-side unique identifier, the CSHT, aserver-side start host time (SSHT), a server-side end host time (SEHT),and a server-side running media play time (SRMPT). For example, the SSHTmay comprise the time at which server-side playback starts. Block 655then transfers control to block 665.

Next, in block 665, the server-side master application initiatesplayback by a server-side playback device of the stock media content,and the server-side master application also initiates a playback of thecustomized media content via a play command it sends to the client-sidesynchronization application and begins playback of the stock mediacontent that is substantially synchronized using live streaming. Forexample, using the live streaming, the server-side playback device playsthe customized media content in synchronization with the playback of thestock media content by a client-side playback device.

Optionally, an additional step may be inserted here of preparing, by theserver-side computing device, one or more offers to the user to purchasecustomized goods to be created by the server-side computing device usingthe user's customization preferences. Optionally, if the preparing stepis inserted, a second additional step may be inserted after the step ofpreparing of processing an offer accepted by the user to purchase thecustomized goods prepared by the server-side computing device using theuser's customization preferences; and creating, by the server-sidecomputing device, the purchased customized goods. For example, thecustomized goods comprise one or more of customized physical goods,customized services, and customized media content. For example, thecustomized goods comprise one or more of a user-specified name, auser-specified message, and another form of customization specified bythe user.

Block 665 then terminates the process.

FIG. 7 is a flowchart of a method 700 for real-time customization andsynchronization of stock media content. FIG. 7 applies to the livemethod viewed from the client side.

The order of the steps in the method 700 is not constrained to thatshown in FIG. 7 or described in the following discussion. Several of thesteps could occur in a different order without affecting the finalresult.

According to this method, which covers the third alternative method, thelive method, the client-side customization application sends the user'sselection of the media content to the server-side customizationapplication. The server-side customization application then constructsthe customized media content and then streams the media content file fordirect playback using a substantially immediate streaming technology.For example, the streaming technology comprises user datagram protocol(UDP). According to the live method, there is no need forsynchronization of the client-side playback and the server-sideplayback, because the playback is substantially immediate.

In block 705, a client-side customization application receives a user'sselection of stock media content to be customized and played by aserver-side playback device in synchronization with server-side playbackof the stock media content by a server-side playback device. Block 705then transfers control to block 710.

Next, in block 710, the client-side customization application obtainsthe user's customization preferences. A user's customization preferencescan be chosen by the user. Alternatively, or additionally, the user'scustomization preferences can be generated using user characteristicscomprised in one or more of memory and data storage. Block 710 thentransfers control to block 712.

Next, in block 712, the client-side synchronization application sends tothe server-side customization application a client-side messagecomprising one or more of the user's customization preferences and theuser's selection of stock media content, for the server-sidecustomization application to use to construct the media content file,creating customized media content.

For example, to communicate with the server-side master application, theclient-side synchronization application browses the network. Theclient-side synchronization application then resolves the masterapplication. The client-side synchronization application then connectsvia the network to the master application. Block 712 then transferscontrol to block 723.

Next, in block 723, the client-side synchronization application receivesthe customized media content in a live stream from the server-sidestreaming application. Block 723 then transfers control to block 765.

Next, in block 765, the client-side synchronization application receivesa play command from the server-side master application to play thecustomized media content. Block 765 then transfers control to block 775.

Next, in block 775, the client-side synchronization applicationprocesses the command to begin playback of the customized media contentand a client-side playback device begins a playback via live streamingof the customized media content that is substantially synchronized witha server-side playback device's playback of the stock media content.Block 775 then terminates the process.

FIG. 8 is a flowchart of a method 800 for real-time customization andsynchronization of stock media content. FIG. 8 applies to the livemethod viewed from the server side.

The order of the steps in the method 800 is not constrained to thatshown in FIG. 8 or described in the following discussion. Several of thesteps could occur in a different order without affecting the finalresult.

In block 805, a server-side master application receives over a networkfrom a client-side customization application a client-side message orpacket comprising stock media content received from a user, theclient-side message or packet further comprising customizationpreferences of the user obtained by the client-side customizationapplication, the customized media content to be played by a client-sideplayback device in coordination with server-side playback of the stockmedia content by a server-side playback device.

A user's customization preferences can be chosen by the user.Alternatively, or additionally, the user's customization preferences canbe generated using user characteristics comprised in one or more ofmemory and data storage. Block 805 then transfers control to block 815.

Next, in block 815, the server-side master application, using thecustomization preferences of the user, customizes the stock mediacontent, so as to create customized media content. For example, theserver-side master application customizes the stock media content usinga pre-defined data structure. For example, the pre-defined datastructure structures the data in chronological order. For example, thepre-defined data structure structures the data according to a structurethat does not comprise chronological order. Further details of how toperform step 815 are given in FIG. 12. Block 815 then transfers controlto block 820.

Next, in block 820, the server-side master application live streams thecustomized media content to the client-side synchronization application.For example, the server-side master application live streams thecustomized media content using user datagram protocol (UDP).

For example, to communicate with the client-side synchronizationapplication, the server-side master application browses the network. Theserver-side master application then resolves the client-sidesynchronization application. The server-side master application thenconnects via the network to the client-side synchronization application.Block 820 then transfers control to block 830.

Next, in block 830, the server-side master application sends a playcommand to the client-side synchronization application. Block 830 thentransfers control to block 855.

Next, in block 855, the server-side master application sends to theclient-side synchronization application a play command to play thecustomized media content. Block 855 then transfers control to block 875.

Next, in block 875, the server-side master application initiatesplayback by a server-side playback device of the stock media content,and the server-side master application also initiates via a play commandit sends to the client-side synchronization application a substantiallysynchronized playback via live streaming of the customized mediacontent. Block 875 then terminates the process.

FIG. 9 is a flowchart of a more detailed method 900 by which theclient-side customization application, using a pre-defined datastructure, using a client-side main thread and a client-side backgroundthread, constructs a media content file comprising one or more of auser's selected media content and media content that was not selected bythe user. FIGS. 9 and 10 provide more detail regarding sub-steps of step315 in FIG. 3 for the baseline method.

The order of the steps in the method 1000 is not constrained to thatshown in FIG. 10 or described in the following discussion. Several ofthe steps could occur in a different order without affecting the finalresult.

FIGS. 9 and 10 provide the steps of the baseline method, according towhich the client constructs the customized media content. According tothe baseline method, the client performs the synchronization of theclient-side playback with the server-side playback.

In block 905, in a client-side main thread, a client-side customizationapplication launches a client-side media player. For example, theclient-side main thread handles one or more actions relating to agraphical user interface (GUI). Block 905 then transfers control toblock 910.

Next, in block 910, the client-side customization application, in theclient-side main thread, selects a pre-determined media content. Forexample, the pre-determined media content comprises one or more ofdialog, music, sound cues, scenes, partial scenes, visual cues, andother media content. The client-side media player then plays thepre-determined media content. Block 910 then transfers control to block915.

Next, in block 915, the client-side customization application, in theclient-side main thread, launches a client-side timer. The client-sidetimer periodically requests from the server-side timer a totalpercentage of the then-written customized media content. For example,the total percentage output is displayed to the user using a progressbar. Block 915 then transfers control to block 920.

Next, in block 920, the client-side customization application, in theclient-side main thread, creates an asynchronous queue that launches aclient-side background thread. The client-side background thread runssimultaneously with the client-side main thread. For example, theclient-side background thread handles actions not handled by theclient-side main thread. For example, the client-side background threaddoes not handle one or more GUI-related actions. Block 920 thentransfers control to block 925.

Next, in block 925, the client-side customization application, in theclient-side background thread, creates a customized media content thatcontains data types. For example, the customized media content may becreated from a file in one or more of client-side data storage andclient-side memory. For example, data types may comprise one or more ofaudio sample rates, bits per channel and other data types. Block 925then transfers control to block 930.

Next, in block 930, the client-side customization application, in theclient-side background thread, using a pre-defined data structure, addsnew media content to the customized media content. For example, theclient-side customization application uses the pre-defined datastructure to sequence the new media content in the customized mediacontent. The new media content comprises one or more of user-selectednew media content and non-user-selected new media content. For example,the new media content comprises one or more of dialog, music, soundcues, scenes, partial scenes, visual cues, and other media content.Block 930 then transfers control to block 935.

Next, in block 935, the client-side customization application, in theclient-side background thread, computes a total media frames count ofthe customized media content. For example, the total media frames countequals the stored media frames count plus a media frames count of thenew media content. Block 935 then transfers control to block 940.

Next, in block 940, the client-side timer, in the client-side mainthread, computes a total percentage of the then-written customized mediacontent. For example, the total percentage of the customized mediacontent is equal to the media frames count subtotal, divided by thetotal media frames count. Block 940 then transfers control to block 945.

Next, in block 945, the client-side customization application, in theclient-side background thread, writes the new media content into thecustomized media content. It is queried whether the new media contentcomprises a final element in the pre-defined data structure. If yes, theclient-side customization application, in the client-side backgroundthread instructs the client-side main thread to terminate operation ofthe client-side timer, and terminates the process. If no, the processloops back to block 930.

Next, in block 950, the client-side customization application, in theclient-side background thread, when the processing of the customizedmedia content is substantially complete, instructs the client-side mainthread to terminate operation of the timer, and terminates the process.

Alternatively, or additionally, the loop between blocks 930 and 945 maybe replaced with a concurrent queue operation for parallel processing,which reads the media content in parallel, and then concatenates themedia content into a buffer.

FIG. 10 is a flowchart of a method 1000 by which the client-sidecustomization application, using a pre-defined data structure,constructs a media content file comprising one or more of a user'sselected media content and media content that was not selected by theuser. FIG. 10 provides more detail regarding sub-steps of step 315 inFIG. 3 for the baseline method.

The order of the steps in the method 1000 is not constrained to thatshown in FIG. 10 or described in the following discussion. Several ofthe steps could occur in a different order without affecting the finalresult.

FIG. 10 provides the steps of the baseline method 1000, according towhich the client constructs the customized media content. According tothe baseline method 1000, the client performs the synchronization of theclient-side playback with the server-side playback.

In block 1005, a client-side customization application launches aclient-side media player. Block 1005 then transfers control to block1010.

Next, in block 1010, the client-side customization application selects apre-determined media content. The client-side media player then playsthe pre-determined media content. Block 1010 then transfers control toblock 1025.

Next, in block 1025, the client-side customization application creates acustomized media content. Block 1025 then transfers control to block1030.

Next, in block 1030, the client-side customization application adds newmedia content to the customized media content. Block 1030 then transferscontrol to block 1035.

Next, in block 1035, the client-side customization application computesa total media frames count of the customized media content. Block 1035then transfers control to block 1040.

Next, in block 1040, a client-side timer computes a total percentage ofthe then-written customized media content. Block 1040 then transferscontrol to block 1045.

Next, in block 1045, the client-side customization application writesthe new media content into the customized media content. It is queriedwhether the new media content comprises a final element in thepre-defined data structure. If yes, the client-side customizationapplication, in the client-side background thread instructs theclient-side main thread to terminate operation of the client-side timer,and terminates the process. If no, the process loops back to block 1030.

Alternatively, or additionally, the loop between blocks 1030 and 1045may be replaced with a concurrent queue operation for parallelprocessing, which reads the media content in parallel, and thenconcatenates the media content into a buffer.

FIG. 11 is a flowchart of a more detailed method 1100 for customizingstock media content, so as to create customized media content, providingmore detail from an overall view regarding sub-steps of step 615 in FIG.6 for the download and streaming methods, and providing more detailregarding sub-steps of step 815 in FIG. 8 for the live method.

The order of the steps in the method 1100 is not constrained to thatshown in FIG. 11 or described in the following discussion. Several ofthe steps could occur in a different order without affecting the finalresult.

Turning now to the method 1100 for the download, streaming, and livemethods, in block 1105, in a client-side main thread, a client-sidecustomization application launches a client-side media player. Forexample, the client-side main thread handles one or more actionsrelating to a graphical user interface (GUI). Block 1105 then transferscontrol to block 1110.

Next, in block 1110, the client-side customization application, in theclient-side main thread, selects a pre-determined media content. Forexample, the pre-determined media content comprises one or more ofdialog, music, sound cues, scenes, partial scenes, visual cues, andother media content. The media player then plays the pre-determinedmedia content. Block 1110 then transfers control to block 1115.

Next, in block 1115, the client-side customization application, in theclient-side main thread, launches a client-side timer. The client-sidetimer periodically requests from the server-side timer a totalpercentage of the then-written customized media content. For example,the total percentage output is displayed to the user using a progressbar. Block 1115 then transfers control to block 1117.

Next, in block 1117, the client-side customization application, in theclient-side main thread, sends a client-side message or packet to theserver-side customization application. For example, the client-sidemessage or packet comprises one or more of a pre-determined mediacontent, and a transmitted error code. Error code algorithms can be usedto perform error detection. For example, one or more of a checksum and alongitudinal redundancy check can be used to perform the error check.Block 1117 then transfers control to block 1119.

Next, in block 1119, the client-side customization application sends amessage or packet with pre-determined media content to the server-sidecustomization application. Block 1119 then transfers control to block1120.

Next, in block 1120, the server-side customization application, in theserver-side main thread, creates an asynchronous queue that launches aserver-side background thread and server-side timer. The server-sidebackground thread runs simultaneously with the server-side main thread.For example, the server-side background thread handles actions nothandled by the server-side main thread. For example, the server-sidebackground thread does not handle one or more GUI-related actions. Block1120 then transfers control to block 1125.

Next, in block 1125, the server-side customization application, in theserver-side background thread, creates a customized media content thatcontains data types. For example, the customized media content may becreated from a file in one or more of server-side data storage andserver-side memory. For example, data types may comprise one or more ofaudio sample rates, bits per channel and other data types. Block 1125then transfers control to block 1130.

Next, in block 1130, the server-side customization application, in theserver-side background thread, using a pre-defined data structure, addsnew media content to the customized media content. For example, theserver-side customization application uses the pre-defined datastructure to sequence the new media content in the customized mediacontent. The new media content comprises one or more of user-selectednew media content and non-user-selected new media content. For example,the new media content comprises one or more of dialog, music, soundcues, scenes, partial scenes, visual cues, and other media content.Block 1130 then transfers control to block 1135.

Next, in block 1135, the server-side customization application, in theserver-side background thread, computes a total media frames count ofthe customized media content. For example, the total media frames countequals the stored media frames count plus a media frames count of thenew media content. Block 1135 then transfers control to block 1140.

Next, in block 1140, the server-side timer, in the server-side mainthread, using the total media frames count, computes a total percentageof the then-written customized media content. For example, the totalpercentage of the customized media content is equal to the media framescount subtotal, divided by the total media frames count. Block 1140 thentransfers control to block 1145.

Next, in block 1145, the server-side customization application, in theserver-side background thread, writes the new media content into thecustomized media content. It is queried whether the new media contentcomprises a final element in the pre-defined data structure. If yes, theserver-side customization application, in the server-side backgroundthread instructs the server-side main thread to terminate operation ofthe client-side timer, and terminates the process. If no, the processloops back to block 1130.

Next, in block 1150, the server-side customization application, in theserver-side background thread, when the processing of the customizedmedia content is substantially complete, instructs the server-side mainthread to terminate operation of the timer, and terminates the process.

Alternatively, or additionally, the loop between blocks 1130 and 1145may be replaced with a concurrent queue operation for parallelprocessing, which reads the media content in parallel, and thenconcatenates the media content into a buffer.

FIG. 12 is a flowchart for a method 1200 for customizing stock mediacontent, so as to create customized media content, pursuant to a methodfor real-time customization and synchronization of stock media contentproviding more detail from the server side regarding sub-steps of step615 in FIG. 6 for the download and streaming methods, and providing moredetail regarding sub-steps of step 815 in FIG. 8 for the live method.

The order of the steps in the method 1200 is not constrained to thatshown in FIG. 12 or described in the following discussion. Several ofthe steps could occur in a different order without affecting the finalresult.

In block 1205, a server-side customization application receives from aclient-side customization application a pre-determined media content.Block 1205 then transfers control to block 1217.

Next, in block 1217, the server-side customization application receivesfrom the client-side customization application a client-side message orpacket with pre-determined media content. Block 1217 then transferscontrol to block 1219 to block 1225.

Next, in block 1225, the server-side customization application creates acustomized media content. Block 1225 then transfers control to block1230.

Next, in block 1230, the server-side customization application, using apre-defined data structure, adds new media content to the customizedmedia content. For example, the server-side customization applicationuses the pre-defined data structure to sequence the new media content inthe customized media content. The new media content comprises one ormore of user-selected new media content and non-user-selected new mediacontent. Block 1230 then transfers control to block 1235.

Next, in block 1235, the server-side customization application computesa total media frames count of the customized media content. For example,the total media frames count equals the stored media frames count plus amedia frames count of the new media content. Block 1235 then transferscontrol to block 1240.

Next, in block 1240, the server-side timer, in the server-side mainthread, using the total media frames count, computes a total percentageof the then-written customized media content. For example, the totalpercentage of the customized media content is equal to the media framescount subtotal, divided by the total media frames count. Block 1240 thentransfers control to block 1245.

Next, in block 1245, the server-side customization application, in theserver-side background thread, writes the new media content into thecustomized media content. It is queried whether the new media contentcomprises a final element in the pre-defined data structure. If yes, theserver-side customization application, in the server-side backgroundthread instructs the server-side main thread to terminate operation ofthe client-side timer, and terminates the process. If no, the processloops back to block 1230.

Next, in block 1250, the server-side customization application, in theserver-side background thread, when the processing of the customizedmedia content is substantially complete, instructs the server-side mainthread to terminate operation of the timer, and terminates the process.

Alternatively, or additionally, the loop between blocks 1230 and 1245may be replaced with a concurrent queue operation for parallelprocessing, which reads the media content in parallel, and thenconcatenates the media content into a buffer.

FIG. 13 is a flowchart of a method 1300 for constructing a customizedmedia content comprising stock media content selected by a user andcustomization preferences of the user pursuant to a method for real-timecustomization and synchronization of stock media content. FIG. 13provides more detail regarding sub-steps of step 345 in FIG. 3 for thebaseline method, step 545 in FIG. 5 for the download and streamingmethods, and step 745 in FIG. 7 for the live method.

The order of the steps in the method 1300 is not constrained to thatshown in FIG. 13 or described in the following discussion. Several ofthe steps could occur in a different order without affecting the finalresult.

In block 1305, the server-side master application receives a client-sidemessage or packet from the client-side synchronization application. Theclient-side message or packet comprises one or more of a uniqueidentifier and a client-side start host time (CSHT). Optionally, theclient-side message or packet further comprises a client-sidetransmitted error code. Error code algorithms can be used to performerror detection. For example, one or more of a checksum and alongitudinal redundancy check can be used to perform the error check.Block 1305 then transfers control to block 1310.

In block 1310, the server-side master application reads the client-sidemessage or packet into one or more server-side buffers. That is, theserver-side master application breaks the client-side message or packetinto one or more pieces, with each piece corresponding to a data type.Then at least one of the one or more pieces is stored by the server-sidemaster application in a server-side buffer. For example, the uniqueidentifier may be stored in a first server-side buffer. For example, theclient-side start host time may be stored in a second server-sidebuffer. For example, the client-side transmitted error code may bestored in a third server-side buffer. For example, other components ofthe client-side message or packet may be stored in other server-sidebuffers. For example, some of the server-side buffers may becoterminous. For example, all the server-side buffers may becoterminous. Block 1310 then transfers control to block 1315.

In block 1315, the server-side master application records a server-sidestart host time (SSHT).

For example, the time measurement may comprise a timestamp. For example,the real world time may comprise a seconds field representing anintegral number of seconds. For example, the real world time may furthercomprise a microseconds field representing an additional number ofmicroseconds elapsed in addition to the integral number of seconds. Forexample, the host time measurement represents the number of secondselapsed since the start of the UNIX epoch at midnight CoordinatedUniversal Time (UTC) Dec. 31, 1969-Jan. 1, 1970. Block 1315 thentransfers control to block 1320.

Next, in block 1320, the server-side master application evaluates theintegrity of the client-side message or packet.

Preferably, but not essentially, the server-side master applicationevaluates the integrity of the client-side message or packet bycomparing the CSHT and the server-side start host time (SSHT). If theCSHT is substantially equal to the SSHT, the server-side masterapplication verifies integrity of the client-side message or packet. Ifthe CSHT is not substantially equal to the SSHT, the server-side masterapplication verifies a lack of integrity of the client-side message orpacket.

Optionally, or additionally, the server-side master applicationevaluates the integrity of the client-side message or packet bycalculating a client-side received error code for the client-sidemessage or packet, and then the server-side master application comparesthe client-side received error code with the client-side transmittederror code comprised in the client-side message or packet.

If the calculated client-side received error code is substantially equalto the client-side transmitted error code, the server-side masterapplication verifies integrity of the client-side message or packet. Ifthe calculated client-side received error code is not substantiallyequal to the client-side transmitted error code, the server-side masterapplication verifies a lack of integrity of the client-side message orpacket.

If the server-side master application verifies a lack of integrity ofthe client-side message or packet, the server-side master applicationdeletes the client-side message or packet and sends a message to theclient-side synchronization application to request transmission of areplacement client-side message or packet. The process loops back tostep 1305.

If the server-side master application verifies the integrity of theclient-side message or packet, the server-side master applicationaccepts the client-side message or packet. Block 1320 transfers controlto block 1325.

Next, in block 1325, the server-side master application records aserver-side running media play time (SRMPT). If no customized mediacontent is being played by the server-side media player, the SRMPT isset to zero. Block 1325 then transfers control to block 1330.

Next, in block 1330, the server-side master application creates aserver-side message or packet. The server-side message or packetcomprises one or more of a unique identifier, the CSHT, the SSHT, aserver-side end host time (SEHT), and the SRMPT of the media beingplayed. Optionally, to facilitate error detection, the server-sidemaster application adds a server-side transmitted error code to one ormore server-side messages it sends to the client-side synchronizationapplication. Block 1330 then terminates the process.

FIG. 14 is a flowchart of a method for receiving and processing aserver-side message or packet and synchronizing one or more clocks in aclient-side synchronization application with one or more clocks in aserver-side master application pursuant to a method for real-timecustomization and synchronization of stock media content. FIG. 14provides more detail regarding sub-steps of step 360 in FIG. 3 for thebaseline method, and step 560 in FIG. 5 for the download and streamingmethods. Synchronization is not required with the live method.

The order of the steps in the method 1400 is not constrained to thatshown in FIG. 14 or described in the following discussion. Several ofthe steps could occur in a different order without affecting the finalresult.

In block 1405, the client-side synchronization application receives aserver-side message or packet from the server-side master application.The server-side message or packet comprises one or more of a client-sideunique identifier, a client-side start host time (CSHT), a server-sidestart host time (SSHT), a server-side end host time (SEHT), and aserver-side running media play time (SRMPT). Optionally, the server-sidemessage or packet further comprises a server-side transmitted errorcode. Error code algorithms can be used to perform error detection. Forexample, one or more of a checksum and a longitudinal redundancy checkcan be used to perform the error check. Block 1405 then transferscontrol to block 1410.

In block 1410, the client-side synchronization application reads theserver-side message or packet into one or more client-side buffers. Thatis, the client-side synchronization application breaks the server-sidemessage or packet into one or more pieces, with each piece correspondingto a data type. Then at least one of the one or more pieces is stored ina client-side buffer. For example, the client-side unique identifier maybe stored in a first client-side buffer. For example, the CSHT may bestored in a second client-side buffer. For example, the SSHT may bestored in a third client-side buffer. For example, the SEHT may bestored in a fourth client-side buffer. For example, the SRMPT may bestored in a fifth client-side buffer. For example, the server-sidetransmitted error code may be stored in a sixth client-side buffer. Forexample, other server-side message or packet components may be stored inother client-side buffers. For example, some of the buffers may becoterminous. For example, all the buffers may be coterminous. Block 1410then transfers control to block 1415.

In block 1415, the client-side synchronization application records aCEHT. The CEHT is defined as a host time at which transmission of aserver-side message or packet ends on the client side. For example, theCEHT may comprise the time at which server-side playback stops. The CEHTis the world value time that the client-side synchronization applicationrecords based on the client-side synchronization application's hosttime.

For example, the time measurement may comprise a timestamp. For example,the real world time may comprise a seconds field representing anintegral number of seconds. For example, the real world time may furthercomprise a microseconds field representing an additional number ofmicroseconds elapsed in addition to the integral number of seconds. Forexample, the host time measurement represents the number of secondselapsed since the start of the UNIX epoch at midnight CoordinatedUniversal Time (UTC) Dec. 31, 1969-Jan. 1, 1970. Block 1415 thentransfers control to block 1420.

Next, in block 1420, the client-side synchronization applicationevaluates the integrity of the server-side message or packet.

Preferably, but not essentially, the client-side synchronizationapplication evaluates the integrity of the server-side message or packetby comparing the CEHT and the SEHT. If the CEHT is substantially equalto the SEHT, the client-side master application verifies integrity ofthe server-side message or packet. If the CEHT is not substantiallyequal to the SEHT, the client-side master application verifies a lack ofintegrity of the server-side message or packet.

Then the client-side synchronization application compares theclient-side received error code with the server-side transmitted errorcode received in the server-side message or packet.

Optionally, or additionally, the client-side synchronization applicationevaluates the integrity of the server-side message or packet bycalculating a server-side received error code for the server-sidemessage or packet, and then the client-side synchronization applicationcompares the server-side received error code with the server-sidetransmitted error code comprised in the server-side message or packet.

If the calculated server-side received error code is substantially equalto the server-side transmitted error code, the client-sidesynchronization application verifies integrity of the server-sidemessage or packet. If the calculated server-side received error code isnot substantially equal to the server-side transmitted error code, theclient-side synchronization application verifies a lack of integrity ofthe server-side message or packet.

Optionally, or additionally, the client-side synchronization applicationevaluates the integrity of the server-side message or packet bycomparing the client-side unique identifier with the client deviceunique identifier.

If the client-side unique identifier is substantially equal to theclient device identifier, the client-side synchronization applicationverifies integrity of the server-side message or packet. If theclient-side unique identifier is not substantially equal to the clientdevice identifier, to the server-side transmitted error code, theclient-side synchronization application verifies a lack of integrity ofthe server-side message or packet.

If the client-side synchronization application verifies a lack ofintegrity of the server-side message or packet, the client-sidesynchronization application deletes the server-side message or packetand sends a message to the client-side synchronization application torequest transmission of a replacement server-side message or packet. Theprocess loops back to step 1405.

If the client-side synchronization application verifies the integrity ofthe server-side message or packet, the client-side synchronizationapplication accepts the server-side message or packet. Block 1420transfers control to block 1435.

Next, in block 1435, using one or more of the CEHT, CSHT, SEHT, andSSHT, the client-side synchronization application then calculates ahalf-round-trip time. The round-trip time is equal to the time it takesa signal to leave from the client-side synchronization application,arrive at the server-side master application, be received by theserver-side master application, be retransmitted by the server-sidemaster application, and arrive back at the client-side synchronizationapplication. For example, the round-trip time RT may be calculatedaccording to equation (1) as:

RT=(CEHT−CSHT)−(SEHT−SSHT).  (1)

Where the server-side processor is faster than a minimal time, forexample, where the server-side processor is faster than a playbacksynchronizing error threshold time, the difference (SEHT minus SSHT) maybe negligible. In these cases, the round-trip time RT may be calculatedaccording to equation (2) as:

RT=CEHT−CSHT.  (2)

Optionally, one or more server-side messages or packets is encrypted.Optionally, one or more client-side messages or packets is encrypted.

The client-side synchronization application then computes ahalf-round-trip time HRT by multiplying the round-trip time RT by 0.5,according to equation (3):

HRT=0.5*RT  (3)

Block 1435 then transfers control to block 1440.

Next, in block 1440, the client-side synchronization application readsthe value of SRMPT. For example, the client-side synchronizationapplication reads from the fifth client-side buffer the value of theSRMPT. Block 1440 then transfers control to block 1445.

Next, in block 1445, using one or more of CEHT, CSHT, SEHT, SSHT, SRMPT,and HRT, the client-side synchronization application calculates aplayback offset time T_(PO). The playback offset time T_(PO) is definedas the time increment by which media playback at the client-side shouldbe speeded up relative to media playback at the server-side tosynchronize the server-side media and the client-side media.

The playback offset time T_(PO) may be defined as the timing differencebetween client-side playback and server-side playback. The playbackoffset time T_(PO) may be calculated according to equation (4):

T _(PO)=HRT+BD,  (4)

where BD is buffer size delays caused by inadequate sizing of one ormore of the client-size buffers. Buffer size delays may be safelyignored if they are sufficiently small.

Block 1445 then transfers control to block 1450.

In block 1450, using one or more of the computed playback offset timeT_(PO) and the SRMPT, the client-side synchronization application thencomputes a client-side running media play time (CRMPT). The CRMPT isdefined as the elapsed running time for the media content that is beingplayed by the media player on the client. For example, the client-sidesynchronization application calculates the CRMPT according to equation(5):

CRMPT=SRMPT+T _(PO).  (5)

Alternatively, or additionally, the client-side synchronizationapplication makes multiple requests in parallel to the server-sidemaster application. Then, using one or more of statistical analysis andmachine learning algorithms, the client-side synchronization applicationestimates the value of the CRMPT. Block 1450 then transfers control toblock 1455.

Next, in block 1455, using one or more of the computed CRMPT and thecomputed playback offset time T_(PO), the client-side synchronizationapplication synchronizes client-side playback of customized mediacontent with server-side playback of stock media content. For example,the client-side synchronization application adjusts the playback tosynchronize the client-side synchronization application to theclient-side playback device. For example, the client-sidesynchronization application adjusts the playback to synchronize theclient-side synchronization application to the client-side playbackdevice by offsetting the playback time of the client-side media playerby the playback offset time T_(PO).

Alternatively, for example, a single system call can be used tocalculate the playback offset time offset time T_(PO). Alternatively,multiple systems calls may be performed to improve accuracy. Forexample, accuracy may be improved via one or more of linear regression,a sum of averages, a technique for evaluating statistical significance,a machine learning algorithm, and the like.

One or more of automatic re-synchronization and manualre-synchronization may be performed as needed. For example, after awhile the clock may drift, meaning that one or more of a stream and adownload of the media content that starts out synchronized may graduallybecome de-synchronized. In such cases, resynchronization may beperformed by one or more of manual execution and automatic execution ofa re-synchronization of the client-side synchronization application inthe client-side synchronization application with the server-side masterapplication in the server-side master application.

The client-side synchronization application may request at random or atpre-determined time intervals the player's synchronization time on theserver-side master application in the server-side computing device. Ifthere is a difference of more than a pre-determined offset, the clientdevice will vary the rate of the playback until the drift is corrected.In another embodiment, a digital signal-processing algorithm may be usedto time compress or stretch the playback. Block 1455 then terminates theprocess.

FIGS. 15A and 15B are a first screenshot 1505 and a second screenshot1510 of a GUI of a client device showing examples of screens initiallydisplayed to a user prior to initiation of one or more of acustomization and synchronization.

In FIG. 15A, a Sign-up button 1513 allows the user to create an accounton the system. The first screenshot 1505 shows a customization andsynchronization menu 1512, showing the main customization andsynchronization options the user will have. The user may be presentedthis customization and synchronization menu 1512 when the user wishes tocustomize media content using a Customization button 1515. Thecustomization and synchronization menu 1512 comprises the Sign-up button1513, a Customization button 1515, a Kid's Customization button 1520, sSaved Customization button 1525, an English/Default Language button1530, a Spanish Language button 1535, a French Language button 1540, aDirector button 1545, a Producer button 1550, an Actor button 1555, aWriter button 1560, a Commercials button 1565, a Trailers button 1570, aDemo 1 button 1575, a Demo 2 button 1580, a Survey button 1585, a Storebutton 1587, and a first Custom Motion picture button 1588. Otherlanguage buttons could be included in addition to or in place of one ormore of the Spanish Language Button 1535 and the French Language button1540. A language other than English could be selected as the DefaultLanguage on the English/Default Language button 1530.

The Customization button 1515 allows the user to customize mediacontent. The Customization button 1515 further allows the user to lockthe customized media content to a client media player. For example, theuser locks the customized media content to the client media player bycreating a unique login and password for the media player. The Kid'sCustomization button 1520 allows the child user to customize mediacontent consistent with limits previously designated by an adult. TheKid's Customization button 1520 further allows the user to lock thecustomized media content to a client media player. For example, the userlocks the customized media content to the client media player bycreating a unique login and password for the media player. The SavedCustomization button 1525 allows the user to retrieve and play hispreviously-customized media content without needing to re-render newcustomized media content choices despite having exited the client mediaplayer before returning to the menu.

The English/Default Language button 1530 provides an audio track mediaplayer in one or more of the English language and a default languagethat synchronizes to the client device. The Spanish button 1535 providesan audio track media player in the Spanish language that synchronizes tothe client device. The French button 1540 provides an audio track mediaplayer in the Spanish language that synchronizes to the client device.Additional language buttons (not pictured) can be added or deletedbased, for instance, on one or more of a user's account information, arating of the media content, a time zone location, regional languageusage, and other factors.

A director-based media track is played if the user presses the Directorbutton 1545. For example, a director-based media track is playeddiscussing the work of a Director of the media track. For example, adirector-based media track is played featuring one or more interviewswith a Director of the media track. For example, a director-based audiotrack is played if the user presses the Director button 1545. Forexample, a director-based video track is played if the user pressed theDirector button 1545. For example, a director-based audio track mediaplayer is played if the user presses the Director button 1545. Forexample, the director-based audio track media player is synchronized tothe client device and is played if the user presses the Director button1545.

A producer-based media track is played if the user presses the Producerbutton 1550. For example, a producer-based media track is playeddiscussing the work of a Producer of the media track. For example, aproducer-based media track is played featuring one or more interviewswith a Producer of the media track. For example, a producer-based audiotrack is played if the user presses the Producer button 1550. Forexample, a producer-based video track is played if the user pressed theProducer button 1550. For example, a producer-based audio track mediaplayer is played if the user presses the Producer button 1550. Forexample, the producer-based audio track media player is synchronized tothe client device and is played if the user presses the Producer button1550.

An actor-based media track is played if the user presses the Actorbutton 1555. For example, a actor-based media track is played discussingthe work of a Actor of the media track. For example, an actor-basedmedia track is played featuring one or more interviews with a Actor ofthe media track. For example, an actor-based audio track is played ifthe user presses the Actor button 1555. For example, a actor-based videotrack is played if the user pressed the Actor button 1555. For example,the actor-based audio track media player is played if the user pressesthe Actor button 1555. For example, the actor-based audio track mediaplayer is synchronized to the client device and is played if the userpresses the Actor button 1555.

A writer-based media track is played if the user presses the Writerbutton 1560. For example, a writer-based media track is playeddiscussing the work of a Writer of the media track. For example, awriter-based media track is played featuring one or more interviews witha Writer of the media track. For example, a writer-based audio track isplayed if the user presses the Writer button 1560. For example, awriter-based video track is played if the user pressed the Writer button1560. For example, a writer-based audio track media player is played ifthe user presses the Writer button 1560. For example, the writer-basedaudio track media player is synchronized to the client device and isplayed if the user presses the Writer button 1560.

Clearly other buttons could be created such as a Costume Designer button(not shown), a Cinematographer button (not shown), and the like.Moreover, additional commentary buttons might be added or deleted basedon, for instance, one or more of a user's selection of the name of anartist who worked on the media content, a user's account information, arating of the media content, a user's time zone location, a user'sregional language usage, and the like. For example, a rating of themedia content comprises one or more of a rating by the Motion PictureAssociation of America, a violence content advisory level, a TV ParentalGuideline, a sexual content advisory, and another rating of the mediacontent.

Turning now to FIG. 15B, if the Commercials button 1565 is pressed bythe user, the Commercials button 1565 will trigger the client device 120to provide a media player that will play commercial content. Forexample, the commercial content may be related to the custom media beingplayed. For example, if the custom media comprises an animated film, thecommercial content may relate to a stuffed animal modeled after thefilm's main character. For example, if the custom media comprises afilm, the commercial content may comprise a Digital Versatile Disc (DVD)of one or more of the film, a previous film by the same director, and aprevious film featuring one of the same actors. Alternatively, oradditionally, the custom media comprises unique media content related tothe user based on one or more of the user's account information, arating of the media content, a time zone location, regional languageusage, and other factors.

If the Trailers button 1570 is pressed by the user, the Trailers button1570 will trigger the client device 120 to provide a media player thatwill play trailer content. For example, the commercial content may berelated to the custom media being played. For example, if the custommedia comprises an animated film, the commercial content may relate to astuffed animal modeled after the film's main character. For example, ifthe custom media comprises a film, the commercial content may comprise aDigital Versatile Disc (DVD) of one or more of the film, a previous filmby the same director, and a previous film featuring one of the sameactors. Alternatively, or additionally, the custom media comprisesunique media content related to the user based on one or more of theuser's account information, a rating of the media content, a time zonelocation, regional language usage, and other factors.

If the Demo 1 button 1575 is pressed by the user, the Demo 1 button 1575will trigger the client device 120 to provide a media player that willplay first demo content. For example, the first demo content comprisesone or more of a demonstration regarding a technical breakthrough, abehind-the-scenes short film regarding the making of a motion picture,an outtakes reel, a documentary about a topic relating to the motionpicture, and another demo.

If the Demo 2 button 1580 is pressed by the user, the Demo 2 button 1580will trigger the client device to provide a media player that will playsecond demo content. For example, the second demo content comprises oneor more of a demonstration regarding a technical breakthrough, abehind-the-scenes short film regarding the making of a motion picture,an outtakes reel, a documentary about a topic relating to the motionpicture, and another demo.

If the Survey button 1585 is pressed by the user, the Survey button 1585will trigger the client-side audience measurement application to providea survey interface in which the user is invited to participate.Alternatively, or additionally, if the Survey button 1585 is pressed bythe user, the Survey button 1585 will trigger the client-side audiencemeasurement application to provide a customized survey interface that iscustomized based on one or more survey preferences. Survey preferencescomprise one or more of a user's account information, a rating of themedia content, a time zone location, regional language usage, and othersurvey preferences. For example, if the user selects a dog in thecustomization process, a survey could be presented regarding dogs.

If the Store button 1587 is pressed by the user, the Store button 1587will trigger the client device to display store information about astore. For example, the store may sell one or more of compact discs(CD's), DVD's, downloads, views, and other formats of on-sale media. Theon-sale media may comprise one or more of the media currently beingviewed, DVD's of other media directed by one or more of the samedirectors who directed the media being viewed, DVD's of other mediaproduced by one of the same producers who produced in the media beingviewed, DVD's of other media with one or more of the same actors actingin the media being viewed, DVD's of other media with one or more of thesame writers who wrote the media being viewed, and the like. Forexample, the store may sell a stuffed animal depicting character thatappears in the media being viewed. For example, the store may sell oneor more of an electronic book (e-book), a paper book, and an audio bookabout the making of the media being viewed. For example, the store maysell one or more of an electronic book (e-book), a paper book, and anaudio book telling the story told by the media being viewed.

If the first Custom Motion picture button 1588 is pressed by the user,the first Custom Motion picture button 1588 will trigger the clientdevice to display Custom Motion picture information about options forpurchasing a Custom Motion picture that the user customizes.

If the About button 1590 is pressed by the user, the About button 1590will trigger the client device to display information about the system.For example, the displayed information comprises one or more of a systemname, a system creation date, a system version, one or more systemprivacy agreements, one or more system warranties, a last day and timethat the system was accessed by the user, and other system information.

If the Legal button 1595 is pressed by the user, the Legal button 1595will trigger the client device to display legal information. Forexample, the displayed information comprises one or more of a contactname and address for service of process, a contact name and address foran attorney, a designation of a jurisdiction in which a lawsuit may bebrought, a specification whether or not binding mediation is to bepursued instead of litigation, and other legal information.

FIG. 16 is an exemplary screenshot of a graphical user interface (GUI)1605 of a client device in a networked environment where the clientdevice displays extracted media content 1605 that is taken from digitalmedia content 1610 to be inserted into a custom media track 1615. Forexample, as shown in the figure, the digital media content 1610 can be amotion picture 1610. For example, as shown in the figure, the custommedia track 1615 can be a soundtrack 1615. The GUI 1605 receives theuser's selection of a derivative media content 1620 to be inserted intothe extracted media content 1605. For example, the derivative mediacontent 1620 comprises a custom identifier 1620. For example, thederivative media content 1620 comprises media that are recorded, storedin a database, and pulled from the database to be added into the customsoundtrack 1615 upon selection by the user. For example, as shown in thefigure, the custom identifier 1620 is Girl's Name. The user selects thecustom identifier 1620 from a custom identifier list 1625. For example,as shown in the figure, the custom identifier list 1625 comprises Girl'sName, Your Pet, Character One, Character Two, and Character Three. Inactual operation, Characters One, Two, and Three would be respectivelyreplaced with the names of a first, second, and third character from theextracted media content 1605. Similarly, if already known, Girl's Nameand Your Pet would be respectively replaced with the actual name of thegirl user and with the actual name of the user's pet.

FIG. 17 is an exemplary screenshot of a graphical user interface (GUI)1705 of a client device that displays an example of how the GUI receivesthe user's selection of a custom identifier to be inserted into a custommedia track. The GUI 1705 may receive the user's selection of a customidentifier 1710 from a custom identifier list 1715. For example, asshown in the figure, the custom identifier 1710 selected by the user isRose. For example, as shown in the figure, the custom identifier list1715 comprises Default, Flower, Petal, Rose, Amgolia, and Coral.

The custom identifier 1715 selected by the user is then imported asselected custom identifier 1720 in the custom identifier master list1725. For example, as shown in the figure, other custom identifiers 1720previously selected by other users and comprised in the customidentifier master list 1725 include Diane, Bambie, Augusto, and Triceps,as well as Rose. The user then presses the Proceed button 1730 toproceed with customization of the custom media track.

FIG. 18 is an exemplary screenshot of a GUI 1805 of a client deviceshowing an example of a Backdrop screen 1805 seen by a user whileprocessing of data is being performed. After the user clicks the Proceedbutton, the Backdrop screen 1805 automatically appears. The processingtext and bar 1820 indicates that processing is occurring. Whileprocessing is occurring, a Backdrop 1825 is shown on the Backdrop screen1805. The Backdrop 1825 comprises one or more of text, media, andanother backdrop format. The processing of the selected data is inreal-time and quick, currently less than approximately ten seconds. Forexample, the Backdrop 1825 comprises an advertisement. For example, asshown here, the Backdrop 1825 can be a photo still from the motionpicture.

Once the processing is complete, the client device automaticallytransfers the user to a customized player screen such as the one shownin FIG. 19. Additionally, or alternatively, the processing of the user'sselection of a custom identifier happens so rapidly in real time thatthe user does not see the track processing screen.

FIG. 19 is an exemplary screenshot of a GUI 1905 of a client deviceshowing an example of a customized player screen 1905. The customizedplayer screen 1905 is synchronized with the customized soundtrack.Depicted in FIG. 19 is a screenshot of a customized character. When auser pushes a Play button 1920, a Presentation 1925 begins to play insynchronization with the customized soundtrack. The Presentation 1925comprises one or more of text, media, and another presentation format. AVolume slider 1930 allows the user to adjust the audio volume. The Playbutton 1920 will switch its appearance to instead appear as a Stopbutton (not pictured) if the user indicates that he wants to stop theplayback by, for example, clicking on the play button 1920. When theuser wants to exit the player, the user clicks the Done button 1940.

FIG. 20 is an exemplary screenshot of a GUI 2005 of a client deviceshowing an example of a login screen for a children's application. Ifthe Kid's Customization button 1520 in FIG. 15 is clicked, this is theGUI 2005 that is shown next.

The child clicks on the screen of the GUI 2005 to draw up the children'slogin box 2010. The children's login box 2010 comprises a password box2020, an OK button 2025, and a cancel button 2030. A parent or guardianuses a keyboard 2035 to type into the password box 2020 a previouslycreated Password. This allows the parent or guardian to limit thechild's access. To allow Kid's Customization, the guardian must clickthe OK button 2025 after entering the Password into the password box2020. The GUI then displays a customized player screen as shown in FIG.19 with the added Kid's Customization functionality.

FIG. 21 is an exemplary screenshot of a GUI 2105 of a client deviceshowing an example of a player resumption screen 2105. Should a userexit a Player screen prematurely (by inadvertently pressing the Donebutton 1940 in FIG. 19), the user can resume without having to inputelements again by selecting the Saved button 2110, which replicates thecontent of the Saved Customization button 1525 in FIG. 15. Once theSaved button 2110 is pressed, the client device automatically transfersthe user to the player resumption screen 2105.

FIG. 22 is an exemplary screenshot of a GUI 2205 of a client deviceshowing an example of a Background Screen 2205 seen by a user prior toinitiation of play of media. For example, the Background Screen 2205comprises one or more of a background visual screen, background audio,and another background media.

The Background Screen 2205 comprises a language indicator button 2210that indicates the language the user previously selected using thecustomization and synchronization menu 1512 in FIG. 15. For example, asshown here, the language indicator button 2210 indicates that thepreviously selected language is Spanish. The customization andsynchronization menu 1512 in FIG. 15 allowed for additional languagechoices. For example, in FIG. 15, the user previously selected apreferred language from an English/Default Language button 1530, aSpanish Language button 1535, and a French Language button 1540.Optionally, the user is allowed to now change his or her prior languageselection if he or she clicks on the language indicator button 2210 andchooses a new language from a pop-up menu (not shown) or anotherlanguage selection mechanism (not shown).

Until the user initiates play of the media, a Background Visual 2215 isshown on the Background Screen 2205. The Background Visual 2215comprises one or more of text, media, and another background visualformat. For example, the Background Visual 2215 comprises anadvertisement. For example, as shown here, the backdrop comprises apromotional photograph from the film. Alternatively, or additionally,the backdrop comprises commercial content related to what is beingplayed on the motion picture theater screen. For example, the BackgroundVisual 2215 comprises one or more advertisements. For example, theadvertisement is static. For example, the advertisement is dynamic. Forexample, the Background Visual 2215 comprises an offer to purchase anitem seen in the motion picture. For example, the Background Visual 2215comprises one or more interactive elements. For example, the BackgroundVisual 2215 comprises a button (not pictured) configured, when pressedby the user, to take the user to another part of the application. Forexample, the Background Visual 2215 comprises a button (not pictured)configured, when pressed by the user, to take the user to an externalresource. For example, the external resource comprises one or more of astore, a social network, a box office, and another external resource.For example, the store comprises one or more of a store operated by aservice provider and a store operated by a third party. For example, theuser might be taken to a theater box office in order to order ticketsfor a future film.

The user may tap, actuate, press or otherwise activate the “Play” button2220 to initiate playback. Alternatively, or additionally, the “Play”button is automatically triggered by the application. The playback mayprovide one or more of audio, video, and another form of playback. Forexample, the playback could provide closed captions. A Volume slider2230 allows the user to adjust the audio volume.

FIG. 23 is an exemplary screenshot of a GUI 2305 of a client deviceshowing an example of an alternative commentary screen 2305 seen by auser as an alternative commentary track is being played. The AlternativeCommentary Screen 2305 comprises an alternative commentary trackindicator 2310 that indicates the alternative commentary track the userpreviously selected using the customization and synchronization menu1512 in FIG. 15. In this example, the user pressed the Director button1545, selecting the director-based media track 2310.

The customization and synchronization menu 1512 in FIG. 15 allowed forselection of the alternative commentary track 2310. For example, in FIG.15, if the user pressed the Director button 1545, an alternativecommentary track 2310 comprising a director-based media track 2310 isplayed. For example, the director-based media track 2310 is playeddiscussing the work of a Director of the media track. For example, thedirector-based media track 2310 is played featuring one or moreinterviews with a Director of the media track. For example, thedirector-based audio track 2310 is played if the user pressed theDirector button 1545. For example, the director-based video track 2310is played if the user pressed the Director button 1545. For example, thedirector-based audio track 2310 media player is played if the userpressed the Director button 1545. For example, the director-based audiotrack media player is synchronized to the client device and is played ifthe user pressed the Director button 1545.

Optionally, the user is allowed to now change his or her alternativecommentary track selection if he or she clicks on the director button2310 and chooses a new alternative commentary track 2310 from a pop-upmenu (not shown) or another language selection mechanism (not shown).

If from the customization and synchronization menu 1512 in FIG. 15, theuser had pressed the Producer button 1550, an alternative commentarytrack 2310 comprising a producer-based media track 2310 is played. Iffrom the customization and synchronization menu 1512 in FIG. 15, theuser had pressed the Actor button 1555, an alternative commentary track2310 comprising an actor-based media track 2310 is played. If from thecustomization and synchronization menu 1512 in FIG. 15, the user hadpressed the Writer button 1555, an alternative commentary track 2310comprising a writer-based media track 2310 is played. As mentioned inthe discussion of FIG. 15, clearly other buttons could be created suchas a Costume Designer button, a Cinematographer button (not shown), andthe like.

FIG. 24 is an exemplary screenshot of a GUI 2405 of a client deviceshowing an example of an Alternative Content Screen 2405 seen by a userbefore alternative content plays. For example, the Alternative ContentScreen 2405 comprises one or more of a commercial, a trailer, adocumentary, an outtake, and another form of alternative content. Forexample, the alternative content is pre-determined by the user. Forexample, the commercial is pre-determined by the user. For example, theAlternative Content Screen 2405 comprises a commercials indicator button2410 that indicates that the user previously selected a commercial usingthe customization and synchronization menu 1512 in FIG. 15.

The Commercials button 1565 comprised in the customization andsynchronization menu 1512 in FIG. 15 allowed for selection of thecommercial. The Menu also allowed for the showing of pre-determinedcommercials. The list of commercials may be targeted based on the useraccount preferences or customization choices.

The commercial may be pre-determined by the client device based on oneor more of a selection algorithm, a profile of the user, demographicinformation regarding one or more of groups to which the user belongsand groups to which the user does not belong, and another selectioncriterion. Alternatively, or additionally, the user may now select oneor more pre-determined commercials. The user may now select the one ormore pre-determined commercials by selecting one or more of a specificcommercial of interest, a commercial category of interest, a commercialdirector of interest, a commercial producer of interest, a commercialactor of interest, a commercial writer of interest, and anothercommercial selection criterion. In this example, two commercials areavailable in the menu, a bear commercial and a wart hog commercial. Auser can press the Bear button 2415 to select the bear commercial.Alternatively, or additionally, the user can press the wart hog button2420 to select the wart hog commercial. In this example, the user nowpresses the Bear button 2415, selecting the bear commercial. Once theBear button 2415 is pressed, the client device automatically transfersthe user to a Commercial Play screen such as the one seen in FIG. 25.

FIG. 25 is an exemplary screenshot of a GUI 2505 of a client deviceshowing an example of an Alternative Content Play Screen 2505 seen by auser as alternative content is playing. For example, the AlternativeContent Play Screen 2505 comprises one or more of a commercial, atrailer, a documentary, an outtake, and another form of alternativecontent. For example, the alternative content is pre-determined by theuser. For example, the commercial is pre-determined by the user.

The commercial that is playing here is the Bear commercial chosen by theuser in the previous figure when he or she pressed the Bear button 2415in FIG. 24. Preferably, though not necessarily, the Bear commercialautomatically starts playing and Alternative Content Play screen 2505 isautomatically displayed after the user pressed the Bear button 2415 inFIG. 24.

The percentage of elapsed time played in the commercial is graphicallyillustrated by an elapsed time bar 2510. The user may control the volumeusing a volume control 2515. The user may play or pause the commercialusing a pause/play button 2520. The pause or play button 2520 togglesbetween playing or pausing the commercial, with the appropriate iconshown to the user to indicate whether pressing the pause/play button2520 will pause the commercial or resume play of the commercial. If theuser presses a Done button 2525, the user is returned to the Commercialsscreen 2405 shown in FIG. 24.

FIGS. 26A and 26B are a pair of exemplary screenshots of GUI's of aclient device showing examples of survey screens displayed to a userpursuant to initiation of a user survey. The examples include defaultsurvey screen 2605 that is initially shown to a user and active surveyscreen 2610 that is shown to a user after the survey is under way.

The Survey button 1585 comprised in the customization andsynchronization menu 1512 in FIG. 15 allowed for selection of thecommercial. If the Survey button 1585 was pressed by the user, theSurvey button 1585 triggered the client device to provide a surveyscreen 2605 or 2610 offering a survey in which the user is invited toparticipate. Alternatively, or additionally, if the Survey button 1585is pressed by the user, the Survey button 1585 will trigger the clientdevice to provide a customized survey interface that is customized basedon one or more survey preferences. Survey preferences comprise one ormore of a user's account information, a rating of the media content, atime zone location, regional language usage, and other surveypreferences. For example, if the user selects a dog in the customizationprocess, a survey could be presented regarding dogs.

Survey screen 2605 is the default survey screen 2605. Survey screen 2605comprises survey button 2615A. If the user hovers one or more of a mouseand another navigation device over the survey button 2615A, the user istaken to the active survey screen 2610 where the user is allowed toinput survey answers. Optionally, if the user hovers over the surveybutton 2615A, the option also appears to input one or more surveypreferences.

Survey screen 2610 comprises sliders 2620A-2620E. Each slider2620A-2620E allows the user to evaluate the media based on the qualityof one of the directing, the producing, the acting, and the writing. Forexample, overall slider 2620 a allows the user to evaluate the mediabased on the overall media quality. For example, directing slider 2620 ballows the user to evaluate the media based on the quality of thedirecting. For example, producing slider 2620 c allows the user toevaluate the media based on the quality of the producing. For example,acting slider 2620 d allows the user to evaluate the media based on thequality of the acting. For example, writing slider 2620 e allows theuser to evaluate the media based on the quality of the writing. Forexample, in addition to the directing, producing, acting, and writingsliders seen in FIG. 26B, one could also have a Cinematographer slider,a Costume slider, and the like.

Alternatively, or additionally, when the user hovers one or more of amouse and another navigation device over the overall slider 2620 a, theuser is invited to individually rate the overall media quality.

Alternatively, or additionally, when the user hovers one or more of amouse and another navigation device over the directing slider 2620 b,the user is invited to individually rate one or more of a media'sco-directors.

Alternatively, or additionally, when the user hovers one or more of amouse and another navigation device over the producing slider 2620 c,the user is invited to individually rate one or more of a media'sco-producers.

Alternatively, or additionally, when the user hovers one or more of amouse and another navigation device over the acting slider 2620 d, theuser is invited to individually rate one or more of a media's actors.

Alternatively, or additionally, when the user hovers one or more of amouse and another navigation device over the writing slider 2620 e, theuser is invited to individually rate one or more of a media's writers.

Variations are almost unlimited, as will be evident to those of skill inthe art. For example, the active survey screen 2610 could furthercomprise sliders allowing the user to provide input on one or more ofthe media's pacing, excitement, fight quality, emotional effect,thematic closeness to its trailer, and so on.

When the user has finished answering the survey, the user clicks a Sendbutton 2625.

FIG. 27 is an exemplary screenshot of a GUI 2705 of a client deviceshowing an example of a Storefront Screen 2705 seen by a user visitingthe store. The Storefront Screen 2705 comprises a store indicator button2710 that indicates that the user previously selected the store usingthe customization and synchronization menu 1512 in FIG. 15.

The Store button 1587 comprised in the customization and synchronizationmenu 1512 in FIG. 15 allowed for selection of the store. If the Storebutton 1587 was pressed by the user, the Store button 1587 triggered theclient device to provide a storefront screen 2705 displaying storeinformation about a store.

Merchandise list 2712 comprises merchandise buttons 2720 a-2720 f.Merchandise buttons 2720 a-2720 f offer the user the opportunity topurchase different merchandise. In this particular example, the user isoffered the opportunity to purchase a first toy using first toy button2720 a. In this particular example, the user is offered the opportunityto purchase a customized motion picture using second Custom Motionpicture button 2720 b. In this particular example, the user is offeredthe opportunity to purchase a second toy named “Jessie” using second toybutton 2720 c. In this particular example, the user is offered theopportunity to purchase a first watch using first watch button 2720 d.In this particular example, the user is offered the opportunity topurchase a third toy using third toy button 2720 e. In this particularexample, the user is offered the opportunity to purchase a second watchusing second watch button 2720 f.

For example, the store may sell one or more of compact discs (CD's),DVD's, downloads, views, and other formats of on-sale media. The on-salemedia may comprise the user's personally customized tracks.

The on-sale media may comprise one or more of the media currently beingviewed, DVD's of other media directed by one or more of the samedirectors who directed the media being viewed, DVD's of other mediaproduced by one of the same producers who produced in the media beingviewed, DVD's of other media with one or more of the same actors actingin the media being viewed, DVD's of other media with one or more of thesame writers who wrote the media being viewed, and the like. Forexample, the store may sell a stuffed animal depicting character thatappears in the media being viewed. For example, the store may sell oneor more of an electronic book (e-book), a paper book, and an audio bookabout the making of the media being viewed. For example, the store maysell one or more of an electronic book (e-book), a paper book, and anaudio book telling the story told by the media being viewed.

For example, the user selects the second Custom Motion picture button2720 b from the merchandise list 2712. The user is then transferred toCustom Motion picture screen 2805 in FIG. 28A. As a second example, theuser selects the second watch button 2720 f. The user is then sent toItem Purchase Screen 2905 in FIG. 29.

FIGS. 28A and 28B are a pair of exemplary screenshots of GUI's of aclient device showing examples of Custom Motion Picture Purchase Screensdisplayed to a user pursuant to initiation of a purchase of a CustomMotion Picture. For example, a purchase may comprise one or more of anownership transfer in exchange for payment, an ownership transfer inexchange for consideration other than payment, a rental, a pay-per-view,and another type of purchase.

The examples include default Custom Motion Picture screen 2805 that isinitially shown to a user and active Custom Motion Picture screen 2810that is shown to a user after the Custom Motion Picture is under way.The default Custom Motion picture Screen 2805 comprises a Custom MotionPicture indicator button 2815 that indicates that the user previouslyselected the Custom Motion picture using one of more of the first CustomMotion Picture button 1588 in FIG. 15 and the second Custom MotionPicture button 2715B in FIG. 27.

Default Custom Motion Picture screen 2805 displays a Custom MotionPicture Purchase opportunity using default settings. In this example,the Default Girl's Name 2820 is Lorena, the name of the motion picture'sleading female character.

Active Custom Motion picture screen 2810 displays a Custom MotionPicture Purchase opportunity using customized settings. For example,customized settings comprise the user's first name, which in thisexample is Amanda. Accordingly, the Customized Girl's Name 2825 isDiane. Variations would include customized settings comprising the firstname of one or more of a user's parent, child, spouse, partner, friend,pet, and stuffed animal.

The user can gather more information about the Custom Motion picture bypressing one or more of first Custom Motion Picture information button2830 and second Custom Motion Picture information button 2835. If theuser presses the first Custom Motion Picture information button 2830,the displayed information may comprise Custom Motion Picture Price 2837.If the user decides to purchase the Custom Motion Picture, he or she canclick on the Buy Now button 2840. If the user presses the “Buy Now”button 2840, this prompts a popup indicating that the user needs toclick on the Cart 2850 in order to add the item to their cart.

Once the user clicks the Cart 2840, the user is automatically taken tothe Purchase Summary Screen 3005 shown below in FIG. 30. If a userwanted to access the Cart 2840 without purchasing the item, the user maydo so by clicking on the Cart tab 2850 on the bottom of the activeCustom Motion picture screen 2810. Optionally, the Cart tab 2850 alsoindicates how many items to be purchased are already in the user's Cart2840.

FIG. 29 is an exemplary screenshot of a GUI 2905 of a client deviceshowing an example of an Item Purchase Screen 2905 seen by a userconsidering making a purchase of an item. The Item Purchase Screen 2905comprises an Item Details field 2910 comprising information regardingthe Item. For example, the Item Details field 2910 comprises one or moreof a photograph of the Item, a specification regarding the item, an Itemprice, an Item condition, Item shipping information, Item manufacturerinformation, Item customer ratings, and an other Item detail. Thephotograph may be displayed in one or more of a static form, a scrollingform, and another photographic form. Optionally, the Item Details fieldcomprises one or more of media and text. Optionally, other items relatedto the selected item can also be displayed. In this example, thephotograph of the watch is displayed in static form. In this example,the Item Details field 2910 comprises a photograph of the watch that isbeing considered for purchase, an indication of its price, and a “BuyNow” button 2835. If the user presses the “Buy Now” button 2915, thisprompts a popup indicating that the user needs to click on the Cart 2920in order to add the item to their Cart 2920. If the user adds the itemto their Cart 2920, the user is taken to Purchase Summary screen 3005 inFIG. 30.

FIG. 30 is an exemplary screenshot of a GUI 3005 of a client deviceshowing an example of a Purchase Summary Screen 3005 seen by a usermaking a purchase of the Custom Motion Picture depicted in FIG. 28 andof the watch depicted in FIG. 29. The Purchase Summary screen 3005comprises Cart button 3010 and Purchase List 3012. If the user hoversone or more of a mouse and another navigation device over the Cartbutton 3010, the user is taken to the Purchase List 3012. Additionally,or alternatively, the user is automatically taken to the Purchase List3012 without needing to hover the one or more of a mouse and anothernavigation device over the Cart button 3010. The Purchase List 3012comprises a Custom Motion picture purchase listing 3015 and a Watchpurchase listing 3017.

The Purchase Summary Screen 3005 further comprises Minus/Plus buttons3020, Pricing Information 3025, the “Buy Now” button 3030, a CartDeletion button 3035, and a Storefront Return button 3040. If the userpresses the “Buy Now” button 2835, this prompts a popup indicating thatthe user needs to click on the Cart 2840 in order to add the item totheir cart.

The Cart Deletion button 3035, when pressed by the user, deletes theuser's Cart 2840. The Storefront Return button 3045, when pressed by theuser, returns the user to the Storefront screen 2505 in FIG. 25. PricingInformation 3025 comprises a Subtotal 3050 giving the total item priceof the Purchase List 3012, a Shipping price 3055, Estimated Tax 3060,and a Total Price 3065. Pricing Information 3025 may be automaticallycalculated. One or more of a registered street address for the user anda purchase location may be used to confirm the pricing. In this example,the Total Price 3065 equals the sum of the Subtotal 3050, the Shippingprice 3055, and the Estimated Tax 3060.

A user has the opportunity to increase or decrease the number of anitems purchased by tapping on the Minus/Plus buttons 3020, whichautomatically tally the quantity of an item desired, and automaticallyadjust the Pricing Information 3025.

FIGS. 31A and 31B are a pair of exemplary screenshots of GUI's of aclient device showing examples of users using the social network. Theexamples include first social network screen 3105 comprising firstsocial network popup box 3107 and second social network screen 3110comprising second social network popup box 3112. First social networkscreen 3105 and second social network screen 3110 can be operatingsimultaneously and/or sequentially.

Advantages of the invention include the ability to individually track apotentially unlimited number of audience members using the uniqueidentifiers comprised in their individual devices. Additionally, mediaplayer time is divided into different buffers to improve precision. Forexample, the minutes and seconds go into different buffers, and theninto different packets.

While the above representative embodiments have been described withcertain components in exemplary configurations, it will be understood byone of ordinary skill in the art that other representative embodimentscan be implemented using one or more of different configurations anddifferent components. For example, it will be understood by one ofordinary skill in the art that the order of certain fabrication stepsand certain components can be altered without substantially impairingthe functioning of the invention.

For example, one or more of audio, video, and another entertainmentformat can be playing on the client-side. For example, one of more ofaudio, video, and another entertainment format can be played on theserver-side.

For example, while this application for simplicity at times verifiesthat the media to be customized is a motion picture, embodiments of theinvention are also applicable to silent pictures, video recordings ofconcerts, audio recordings of concerts, video recordings of interviews,audio recordings of interviews, and countless other media. For example,instead of being implemented by the client-side customizationapplication 145 and the server-side master application 185, the steps ofthe flowchart depicted in FIG. 6 may be implemented by one or more ofthe server-side computing device 170 and the client device 120. Forexample, instead of being primarily implemented by the client-sidecustomization application 145, the server-side master application 185,and the server-side customization application 190, the steps of theflowchart depicted in FIGS. 9 and 10 may be implemented by one or moreof the server-side computing device 170 and the client device 120.

For example, instead of being implemented by the client-sidecustomization application 145, the server-side master application 185,the server-side customization application 190, and the server-sidestreaming application 195, the steps of the flowchart depicted in FIG. 5may be implemented by one or more of the server-side computing device170 and the client device 120. For example, instead of being primarilyimplemented by the server-side master application 185, the steps of theflowchart depicted in FIGS. 11 and 12 may be implemented by one or moreof the server-side computing device 170 and the client device 120.

For example, instead of being located in the client-side memory 130, oneor more of the client-side electronic commerce application 140, theclient-side customization application 145, the client-side audiencemeasurement application 150, a client-side social networking application155, and the client-side additional content application 160 may belocated in a section of the client device 120 other than the client-sidememory 130.

For example, instead of being located in the server-side memory 180, oneor more of the server-side master application 185, the server-sidecustomization application 190, and the server-side streaming application195 may be located in one or more of the server-side data storage 165and a section of the server-side computing device 170 other than theserver-side memory 180. For example, instead of being a free-standingcomponent of the server-side networked environment 110, the server-sidememory 180 may be located in the server-side computing device 170.

For example, the client-side data storage 135 may be separate from theclient device 120 rather than being comprised in the client device 120.For example, the server-side data storage 165 may be comprised in theserver-side computing device 170 rather than being separate from theserver-side computing device 170. For example, in addition to theDirector, Producer, Actor, and Writer buttons seen in FIG. 15, one couldalso have a Cinematographer button, a Costume Designer button, and thelike.

For example, instead of being the client device 120 and the client-sideplayback device 135 being two separate entities, the client-sideplayback device 135 may be comprised in the client device 120. Forexample, instead of the client-side customization application 145 andthe client-side synchronization application 147 being two separateentities, the client-side synchronization application 147 may becomprised in the client-side customization application 145. For example,instead of the client-side customization application 145 and theclient-side synchronization application 147 being two separate entities,the client-side customization application 145 may be comprised in theclient-side synchronization application 147. The representativeembodiments and disclosed subject matter, which have been described indetail herein, have been presented by way of example and illustrationand not by way of limitation. It will be understood by those skilled inthe art that various changes may be made in the form and details of thedescribed embodiments resulting in equivalent embodiments that remainwithin the scope of the invention. It is intended, therefore, that thesubject matter in the above description shall be interpreted asillustrative and shall not be interpreted in a limiting sense.

What is claimed is:
 1. A method for real-time customization andsynchronization of stock media content, comprising: receiving, by aclient device controlled by a user, stock media content selected by theuser to be customized and played on the client device in coordinationwith server-side playback of the stock media content by a server-sidecomputing device; obtaining, by the client device, customizationpreferences of the user; customizing the stock media content, by theclient device, using the customization preferences, so as to createcustomized media content; creating, by the client device, a client-sidemessage or packet comprising one or more of a client-side uniqueidentifier and a client-side start host time (CSHT); sending, by theclient device, the client-side message or packet to the server-sidecomputing device; receiving and processing a server-side message orpacket comprising g one or more of a server-side unique identifier, theCSHT, a server-side start host time (SSHT), a server-side end host time(SEHT), and a server-side running media play time (SRMPT) andsubstantially synchronizing in real-time, by the client device, usingone or more of the server-side unique identifier, the CSHT, the SSHT,the SEHT, and the SRMPT, client-side playback of the customized mediacontent with server-side playback of the stock media content; andplaying back, by the client device, the synchronized customized mediacontent.
 2. The method of claim 1, wherein the step of communicatingcomprises transmitting a client-side message or packet, by the clientdevice, over the network, to the server-side computing device.
 3. Themethod of claim 1, wherein the step of obtaining comprises receivingcustomization preference selections from the user.
 4. The method ofclaim 1, wherein the step of obtaining comprises generatingcustomization preferences for the user using user characteristicscomprised in one or more of client-side data storage and client-sidememory.
 5. The method of claim 1, comprising a further step, performedafter the substantially synchronizing step, of: relaying to the user, bythe client device, one or more offers to purchase customized goodsprepared by the server-side computing device using the user'scustomization preferences.
 6. A method for customizing media contentpursuant to a method for real-time customization and synchronization ofstock media content, comprising: receiving and processing, by aserver-side computing device, from a client device controlled by a user,a client-side message or packet from the client device comprising one ormore of a client-side unique identifier, and a client-side start hosttime (CSHT); creating, by the server-side computing device, aserver-side message or packet comprising one or more of a server-sideunique identifier comprising a copy of the client-side uniqueidentifier, the CSHT, a server-side start host time (SSHT), aserver-side end host time (SEHT), and a server-side running media playtime (SRMPT); transmitting the server-side message or packet to theclient device, by the server-side computing device, to be used by theclient device along with previously received stock media contentselected by a user to be customized, and customized media contentpreviously created using customization preferences obtained from a user,to substantially synchronize in real-time, using the CSHT, client-sideplayback of the customized media content with server-side playback ofthe stock media content; and playing back, by the server-side computingdevice, the synchronized stock media content.
 7. A method forcustomizing media content pursuant to a method for real-timecustomization and synchronization of stock media content, comprising:receiving over a network from a client device controlled by a user, by aserver-side computing device, a message or packet comprising stock mediacontent received from the user, the message or packet further comprisingcustomization preferences of the user obtained by the client-sidecustomization application, the customized media content to be played bya client-side playback device in coordination with server-side playbackof the stock media content by a server-side playback device; customizingthe stock media content, by the server-side computing device, using thecustomization preferences of the user, so as to create customized mediacontent; transmitting, by the server-side computing device, to theclient device, the customized media content so that the client devicemay substantially synchronize with its playback of the customized mediacontent a playback of the stock media content by the server-sidecomputing device; receiving, by the server-side computing device, fromthe client device, a client-side message or packet comprising one ormore of a client-side unique identifier and a client-side start hosttime (CSHT); sending to the client device, by the server-side computingdevice, a server-side message or packet comprising one or more of aserver-side unique identifier, the CSHT, a server-side start host time(SSHT), a server-side end host time (SEHT), and a server-side runningmedia play time (SRMPT); and initiating, by the server-side computingdevice, server-side playback of the stock media content and initiating,by the server-side computing device, via a play command the server-sidecomputing device sends to the client device, client-side playback of thecustomized media content that is substantially synchronized using one ormore of the client-side unique identifier, the CSHT, the SSHT, the SEHT,and the SRMPT.
 8. The method of claim 7, wherein the step oftransmitting comprises downloading the customized media content by theserver-side computing to the client device.
 9. The method of claim 7,wherein the step of transmitting comprises streaming segments of thecustomized media content by the server-side computing to the clientdevice.
 10. The method of claim 7, wherein the step of transmittingcomprises transmitting a server-side message or packet, by theserver-side computing device, to the client device.
 11. The method ofclaim 7, wherein the step of receiving comprises receiving usercustomization preference selections from the client device, by theserver-side computing device.
 12. The method of claim 7, wherein thestep of receiving comprises receiving from the client device, by theserver-side computing device, a client-side message or packet.
 13. Themethod of claim 7, wherein the step of receiving comprises receivingfrom the client device, by the server-side computing device, aclient-side message or packet comprising user customization preferenceselections.
 14. The method of claim 7, wherein the step of receivingcomprises generating, by the server-side computing device, customizationpreferences for the user using user characteristics comprised in one ormore of server-side data storage and server-side memory.
 15. The methodof claim 7, comprising a further step, performed after the initiatingstep, of: preparing, by the server-side computing device, one or moreoffers to the user to purchase customized goods to be created by theserver-side computing device using the user's customization preferences.16. The method of claim 15, further comprising further steps, performedafter the preparing step, of: processing an offer accepted by the userto purchase the customized goods prepared by the server-side computingdevice using the user's customization preferences; and creating, by theserver-side computing device, the purchased customized goods.
 17. Themethod of claim 15, wherein the customized goods comprise one or more ofcustomized physical goods, customized services, and customized mediacontent.
 18. The method of claim 15, wherein the customized goodscomprise one or more of a user-specified name, a user-specified message,and another form of customization specified by the user.
 19. A methodfor receiving and processing a server-side message or packet andsynchronizing one or more clocks comprised in a client device under auser's control with one or more server-side clocks pursuant to a methodfor real-time customization and synchronization of stock media content,comprising: receiving, by the client device, a server-side message orpacket from the server-side master application, the server-side messageor packet comprising one or more of a unique identifier, a client-sidestart host time (CSHT), a server-side start host time (SSHT), aserver-side end host time (SEHT), and a server-side running media playtime (SRMPT); reading, by the client device, the accepted server-sidemessage or packet into one or more client-side buffers; recording, bythe client device, a client end host time (CEHT); evaluating andverifying, by the client device, integrity of the server-side message orpacket by comparing the CEHT and the SEHT; calculating a half-round-triptime (HRT), by the client device, using one or more of the CEHT, CSHT,SEHT, and SSHT; reading, by the client device a value of the SRMPT;calculating, by the client device, using one or more of CEHT, CSHT,SEHT, SSHT, SRMPT, and HRT, a playback offset time T_(PO); computing, bythe client device, using one or more of the T_(PO) and the SRMPT, aclient-side running media play time (CRMPT); and substantiallysynchronizing, by the client device, using one or more of the CRMPT andthe T_(PO), client-side playback of customized media content toserver-side playback of stock media content.
 20. A method forcustomizing media content pursuant to a method for real-timecustomization and synchronization of stock media content, comprising:receiving over a network from a client device controlled by a user, by aserver-side computing device, a message or packet comprising stock mediacontent received from a user, the message or packet further comprisingcustomization preferences of the user obtained by the client-sidecustomization application, the customized media content to be played bya client-side playback device in coordination with server-side playbackof the stock media content by a server-side playback device; customizingthe stock media content, by the server-side computing device, using thecustomization preferences of the user, so as to create customized mediacontent; and streaming live over the network, by the server-sidecomputing device, to the client device, the customized media content forplayback by the client device that is substantially synchronized withplayback by the server-side computing device of the stock media content.21. The method of claim 20, wherein the step of streaming live comprisesstreaming live the customized media content using user datagram protocol(UDP).
 22. A method for customizing stock media content pursuant to amethod for real-time customization and synchronization of stock mediacontent, so as to create customized media content, comprising:receiving, by a server-side computing device, from a client device underthe control of a user, a client-side message or packet withpre-determined media content; creating, by the server-side computingdevice, a customized media content; adding, by the server-side computingdevice, to the customized media content, using a pre-defined datastructure, new media content comprising one or more of user-selected newmedia content and non-user-selected new media content; computing, by theserver-side computing device, a total media frames count of thecustomized media content; computing, by the server-side computingdevice, a total percentage of the then-written customized media content;and writing, by the server-side computing device, the new media contentinto the customized media content.
 23. A method for receiving andprocessing a server-side message or packet and synchronizing one or moreclocks comprised in a client device under a user's control with one ormore server-side clocks pursuant to a method for real-time customizationand synchronization of stock media content, comprising: receiving, bythe client device, a server-side message or packet from the server-sidemaster application, the server-side message or packet comprising one ormore of a unique identifier, a client-side start host time (CSHT), aserver-side start host time (SSHT), a server-side end host time (SEHT),and a server-side running media play time (SRMPT); reading, by theclient device, the accepted server-side message or packet into one ormore client-side buffers; recording, by the client device, a client endhost time (CEHT); evaluating and verifying, by the client device,integrity of the server-side message or packet by comparing the CEHT andthe SEHT; calculating a half-round-trip time (HRT), by the clientdevice, using one or more of the CEHT, CSHT, SEHT, and SSHT; reading, bythe client device a value of the SRMPT; calculating, by the clientdevice, using one or more of CEHT, CSHT, SEHT, SSHT, SRMPT, and HRT, aplayback offset time T_(PO); computing, by the client device, using oneor more of the T_(PO) and the SRMPT, a client-side running media playtime (CRMPT); and synchronizing, by the client device, using one or moreof the CRMPT and the T_(PO), client-side playback of customized mediacontent to server-side playback of stock media content.
 24. A method forconstructing a media content file comprising one or more of a user'sselected media content and media content that was not selected by theuser, pursuant to a method for real-time customization andsynchronization of stock media content, comprising: launching, by aclient device under the control of a user, a client-side media player;selecting and playing, by the client device, a pre-determined mediacontent; creating, by the client device, a customized media content;adding, by the client device, new media content to the customized mediacontent; computing, by the client device, a total media frames count ofthe customized media content; computes, by the client device, a totalpercentage of the then-written customized media content; and writing, bythe client device, the new media content into the customized mediacontent.
 25. A server-side computing device for customizing mediacontent, comprising: a processor; data storage operably connected withthe processor; memory operably connected with the processor, the memorycomprising one or more of a server-side master application, aserver-side customization application, and a server-side streamingapplication; a projector operably connected with the processor; and alocal interface operably connected with the processor and configured tocommunicate over a network with a client device controlled by a user,the server-side master application configured to receive over thenetwork from the client device a message or packet comprising stockmedia content selected by the user, the server-side customizationapplication configured to obtain customization preferences of the user;the server-side customization application further configured tocustomize the stock media content, using the customization preferencesof the user, so as to create customized media content, the localinterface configured to transmit to the client device via the networkserver-side timing information and the customized media content so thatthe client device may substantially synchronize with its playback of thecustomized media content a playback by the projector of the stock mediacontent.